1 module directx.d3d11;
2 /*-------------------------------------------------------------------------------------
3  *
4  * Copyright (c) Microsoft Corporation
5  *
6  *-------------------------------------------------------------------------------------*/
7 
8 version(Windows):
9 version(Direct3D_11):
10 
11 public import directx.dxgi;
12 public import directx.d3dcommon;
13 
14 enum D3D11_16BIT_INDEX_STRIP_CUT_VALUE = ( 0xffff );
15 enum D3D11_32BIT_INDEX_STRIP_CUT_VALUE = ( 0xffffffff );
16 enum D3D11_8BIT_INDEX_STRIP_CUT_VALUE = ( 0xff );
17 enum D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = ( 9 );
18 enum D3D11_CLIP_OR_CULL_DISTANCE_COUNT = ( 8 );
19 enum D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = ( 2 );
20 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = ( 14 );
21 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = ( 4 );
22 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = ( 32 );
23 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = ( 15 );
24 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
25 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = ( 15 );
26 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = ( 1 );
27 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
28 enum D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = ( 64 );
29 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
30 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = ( 1 );
31 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = ( 1 );
32 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
33 enum D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = ( 32 );
34 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = ( 1 );
35 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = ( 128 );
36 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = ( 1 );
37 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = ( 1 );
38 enum D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = ( 128 );
39 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = ( 1 );
40 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT = ( 16 );
41 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = ( 1 );
42 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = ( 1 );
43 enum D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT = ( 16 );
44 enum D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = ( 32 );
45 enum D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS = ( 4 );
46 enum D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
47 enum D3D11_COMMONSHADER_TEMP_REGISTER_COUNT = ( 4096 );
48 enum D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = ( 3 );
49 enum D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS = ( 3 );
50 enum D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = ( 10 );
51 enum D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = ( -10 );
52 enum D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = ( -8 );
53 enum D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = ( 7 );
54 enum D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 256 );
55 enum D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = ( 64 );
56 enum D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 240 );
57 enum D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = ( 68 );
58 enum D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 224 );
59 enum D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = ( 72 );
60 enum D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 208 );
61 enum D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = ( 76 );
62 enum D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 192 );
63 enum D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = ( 84 );
64 enum D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 176 );
65 enum D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = ( 92 );
66 enum D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 160 );
67 enum D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = ( 100 );
68 enum D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 144 );
69 enum D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = ( 112 );
70 enum D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 128 );
71 enum D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = ( 128 );
72 enum D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 112 );
73 enum D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = ( 144 );
74 enum D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 96 );
75 enum D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = ( 168 );
76 enum D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 80 );
77 enum D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = ( 204 );
78 enum D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 64 );
79 enum D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = ( 256 );
80 enum D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 48 );
81 enum D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = ( 340 );
82 enum D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 32 );
83 enum D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = ( 512 );
84 enum D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 16 );
85 enum D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = ( 768 );
86 enum D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = ( 1 );
87 enum D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = ( 256 );
88 enum D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = ( 768 );
89 enum D3D11_CS_4_X_THREAD_GROUP_MAX_X = ( 768 );
90 enum D3D11_CS_4_X_THREAD_GROUP_MAX_Y = ( 768 );
91 enum D3D11_CS_4_X_UAV_REGISTER_COUNT = ( 1 );
92 enum D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = ( 65535 );
93 enum D3D11_CS_TGSM_REGISTER_COUNT = ( 8192 );
94 enum D3D11_CS_TGSM_REGISTER_READS_PER_INST = ( 1 );
95 enum D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = ( 1 );
96 enum D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = ( 1 );
97 enum D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = ( 1024 );
98 enum D3D11_CS_THREAD_GROUP_MAX_X = ( 1024 );
99 enum D3D11_CS_THREAD_GROUP_MAX_Y = ( 1024 );
100 enum D3D11_CS_THREAD_GROUP_MAX_Z = ( 64 );
101 enum D3D11_CS_THREAD_GROUP_MIN_X = ( 1 );
102 enum D3D11_CS_THREAD_GROUP_MIN_Y = ( 1 );
103 enum D3D11_CS_THREAD_GROUP_MIN_Z = ( 1 );
104 enum D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = ( 16384 );
105 enum D3D11_DEFAULT_BLEND_FACTOR_ALPHA = ( 1.0f );
106 enum D3D11_DEFAULT_BLEND_FACTOR_BLUE = ( 1.0f );
107 enum D3D11_DEFAULT_BLEND_FACTOR_GREEN = ( 1.0f );
108 enum D3D11_DEFAULT_BLEND_FACTOR_RED = ( 1.0f );
109 enum D3D11_DEFAULT_BORDER_COLOR_COMPONENT = ( 0.0f );
110 enum D3D11_DEFAULT_DEPTH_BIAS = ( 0 );
111 enum D3D11_DEFAULT_DEPTH_BIAS_CLAMP = ( 0.0f );
112 enum D3D11_DEFAULT_MAX_ANISOTROPY = ( 16 );
113 enum D3D11_DEFAULT_MIP_LOD_BIAS = ( 0.0f );
114 enum D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX = ( 0 );
115 enum D3D11_DEFAULT_SAMPLE_MASK = ( 0xffffffff );
116 enum D3D11_DEFAULT_SCISSOR_ENDX = ( 0 );
117 enum D3D11_DEFAULT_SCISSOR_ENDY = ( 0 );
118 enum D3D11_DEFAULT_SCISSOR_STARTX = ( 0 );
119 enum D3D11_DEFAULT_SCISSOR_STARTY = ( 0 );
120 enum D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = ( 0.0f );
121 enum D3D11_DEFAULT_STENCIL_READ_MASK = ( 0xff );
122 enum D3D11_DEFAULT_STENCIL_REFERENCE = ( 0 );
123 enum D3D11_DEFAULT_STENCIL_WRITE_MASK = ( 0xff );
124 enum D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = ( 0 );
125 enum D3D11_DEFAULT_VIEWPORT_HEIGHT = ( 0 );
126 enum D3D11_DEFAULT_VIEWPORT_MAX_DEPTH = ( 0.0f );
127 enum D3D11_DEFAULT_VIEWPORT_MIN_DEPTH = ( 0.0f );
128 enum D3D11_DEFAULT_VIEWPORT_TOPLEFTX = ( 0 );
129 enum D3D11_DEFAULT_VIEWPORT_TOPLEFTY = ( 0 );
130 enum D3D11_DEFAULT_VIEWPORT_WIDTH = ( 0 );
131 enum D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = ( 3968 );
132 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = ( 4 );
133 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
134 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = ( 32 );
135 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = ( 2 );
136 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = ( 1 );
137 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = ( 3 );
138 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
139 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = ( 1 );
140 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = ( 2 );
141 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = ( 1 );
142 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = ( 4 );
143 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
144 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = ( 32 );
145 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = ( 2 );
146 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = ( 1 );
147 enum D3D11_DS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
148 enum D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
149 enum D3D11_DS_OUTPUT_REGISTER_COUNT = ( 32 );
150 enum D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP = ( 0.6 );
151 enum D3D11_FLOAT32_MAX	= ( 3.402823466e+38f );
152 enum D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = ( 0.6f );
153 enum D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = ( 2.4f );
154 enum D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = ( 1.0f );
155 enum D3D11_FLOAT_TO_SRGB_OFFSET = ( 0.055f );
156 enum D3D11_FLOAT_TO_SRGB_SCALE_1 = ( 12.92f );
157 enum D3D11_FLOAT_TO_SRGB_SCALE_2 = ( 1.055f );
158 enum D3D11_FLOAT_TO_SRGB_THRESHOLD = ( 0.0031308f );
159 enum D3D11_FTOI_INSTRUCTION_MAX_INPUT = ( 2147483647.999f );
160 enum D3D11_FTOI_INSTRUCTION_MIN_INPUT = ( -2147483648.999f );
161 enum D3D11_FTOU_INSTRUCTION_MAX_INPUT = ( 4294967295.999f );
162 enum D3D11_FTOU_INSTRUCTION_MIN_INPUT = ( 0.0f );
163 enum D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST = ( 2 );
164 enum D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS = ( 1 );
165 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
166 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
167 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = ( 1 );
168 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = ( 1 );
169 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
170 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT = ( 1 );
171 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = ( 2 );
172 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = ( 1 );
173 enum D3D11_GS_INPUT_REGISTER_COMPONENTS = ( 4 );
174 enum D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
175 enum D3D11_GS_INPUT_REGISTER_COUNT = ( 32 );
176 enum D3D11_GS_INPUT_REGISTER_READS_PER_INST = ( 2 );
177 enum D3D11_GS_INPUT_REGISTER_READ_PORTS = ( 1 );
178 enum D3D11_GS_INPUT_REGISTER_VERTICES = ( 32 );
179 enum D3D11_GS_MAX_INSTANCE_COUNT = ( 32 );
180 enum D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = ( 1024 );
181 enum D3D11_GS_OUTPUT_ELEMENTS = ( 32 );
182 enum D3D11_GS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
183 enum D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
184 enum D3D11_GS_OUTPUT_REGISTER_COUNT = ( 32 );
185 enum D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = ( 32 );
186 enum D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = ( 32 );
187 enum D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS = ( 4 );
188 enum D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
189 enum D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST = ( 2 );
190 enum D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS = ( 1 );
191 enum D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = ( 0xffffffff );
192 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
193 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
194 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = ( 1 );
195 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = ( 2 );
196 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = ( 1 );
197 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
198 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
199 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = ( 1 );
200 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = ( 2 );
201 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = ( 1 );
202 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = ( 1 );
203 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
204 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = ( 1 );
205 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = ( 2 );
206 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = ( 1 );
207 enum D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = ( 0xffffffff );
208 enum D3D11_HS_MAXTESSFACTOR_LOWER_BOUND = ( 1.0f );
209 enum D3D11_HS_MAXTESSFACTOR_UPPER_BOUND = ( 64.0f );
210 enum D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = ( 3968 );
211 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = ( 1 );
212 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
213 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = ( 1 );
214 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = ( 2 );
215 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = ( 1 );
216 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = ( 4 );
217 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
218 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = ( 32 );
219 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = ( 2 );
220 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = ( 1 );
221 enum D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
222 enum D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY = ( 0 );
223 enum D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
224 enum D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = ( 1 );
225 enum D3D11_IA_INSTANCE_ID_BIT_COUNT = ( 32 );
226 enum D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT = ( 32 );
227 enum D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT = ( 32 );
228 enum D3D11_IA_PRIMITIVE_ID_BIT_COUNT = ( 32 );
229 enum D3D11_IA_VERTEX_ID_BIT_COUNT = ( 32 );
230 enum D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = ( 32 );
231 enum D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = ( 128 );
232 enum D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = ( 32 );
233 enum D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = ( 0xffffffff );
234 enum D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER = ( 0xffffffff );
235 enum D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = ( 0xffffffff );
236 enum D3D11_KEEP_UNORDERED_ACCESS_VIEWS = ( 0xffffffff );
237 enum D3D11_LINEAR_GAMMA = ( 1.0f );
238 enum D3D11_MAJOR_VERSION = ( 11 );
239 enum D3D11_MAX_BORDER_COLOR_COMPONENT = ( 1.0f );
240 enum D3D11_MAX_DEPTH = ( 1.0f );
241 enum D3D11_MAX_MAXANISOTROPY = ( 16 );
242 enum D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT = ( 32 );
243 enum D3D11_MAX_POSITION_VALUE = ( 3.402823466e+34f );
244 enum D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP = ( 17 );
245 enum D3D11_MINOR_VERSION = ( 0 );
246 enum D3D11_MIN_BORDER_COLOR_COMPONENT = ( 0.0f );
247 enum D3D11_MIN_DEPTH = ( 0.0f );
248 enum D3D11_MIN_MAXANISOTROPY = ( 0 );
249 enum D3D11_MIP_LOD_BIAS_MAX = ( 15.99f );
250 enum D3D11_MIP_LOD_BIAS_MIN = ( -16.0f );
251 enum D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT = ( 8 );
252 enum D3D11_MIP_LOD_RANGE_BIT_COUNT = ( 8 );
253 enum D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = ( 1.4f );
254 enum D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = ( 0 );
255 enum D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT = ( 15 );
256 enum D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = ( 16 );
257 enum D3D11_PS_CS_UAV_REGISTER_COMPONENTS = ( 1 );
258 enum D3D11_PS_CS_UAV_REGISTER_COUNT = ( 8 );
259 enum D3D11_PS_CS_UAV_REGISTER_READS_PER_INST = ( 1 );
260 enum D3D11_PS_CS_UAV_REGISTER_READ_PORTS = ( 1 );
261 enum D3D11_PS_FRONTFACING_DEFAULT_VALUE = ( 0xffffffff );
262 enum D3D11_PS_FRONTFACING_FALSE_VALUE = ( 0 );
263 enum D3D11_PS_FRONTFACING_TRUE_VALUE = ( 0xffffffff );
264 enum D3D11_PS_INPUT_REGISTER_COMPONENTS = ( 4 );
265 enum D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
266 enum D3D11_PS_INPUT_REGISTER_COUNT = ( 32 );
267 enum D3D11_PS_INPUT_REGISTER_READS_PER_INST = ( 2 );
268 enum D3D11_PS_INPUT_REGISTER_READ_PORTS = ( 1 );
269 enum D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = ( 0.0f );
270 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = ( 1 );
271 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
272 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT = ( 1 );
273 enum D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS = ( 1 );
274 enum D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
275 enum D3D11_PS_OUTPUT_MASK_REGISTER_COUNT = ( 1 );
276 enum D3D11_PS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
277 enum D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
278 enum D3D11_PS_OUTPUT_REGISTER_COUNT = ( 8 );
279 enum D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = ( 0.5f );
280 enum D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT = ( 16 );
281 enum D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = ( 4096 );
282 enum D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = ( 27 );
283 enum D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = ( 4096 );
284 enum D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = ( 4096 );
285 enum D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = ( 32 );
286 enum D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = ( 32 );
287 enum D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = ( 16384 );
288 enum D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = ( 1024 );
289 enum D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = ( 4096 );
290 enum D3D11_REQ_MAXANISOTROPY = ( 16 );
291 enum D3D11_REQ_MIP_LEVELS = ( 15 );
292 enum D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = ( 2048 );
293 enum D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = ( 4096 );
294 enum D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = ( 16384 );
295 enum D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = ( 128 );
296 enum D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = ( 0.25f );
297 enum D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = ( 20 );
298 enum D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = ( 4096 );
299 enum D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = ( 2048 );
300 enum D3D11_REQ_TEXTURE1D_U_DIMENSION = ( 16384 );
301 enum D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = ( 2048 );
302 enum D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION = ( 16384 );
303 enum D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = ( 2048 );
304 enum D3D11_REQ_TEXTURECUBE_DIMENSION = ( 16384 );
305 enum D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = ( 0 );
306 enum D3D11_SHADER_MAJOR_VERSION = ( 5 );
307 enum D3D11_SHADER_MAX_INSTANCES = ( 65535 );
308 enum D3D11_SHADER_MAX_INTERFACES = ( 253 );
309 enum D3D11_SHADER_MAX_INTERFACE_CALL_SITES = ( 4096 );
310 enum D3D11_SHADER_MAX_TYPES = ( 65535 );
311 enum D3D11_SHADER_MINOR_VERSION = ( 0 );
312 enum D3D11_SHIFT_INSTRUCTION_PAD_VALUE = ( 0 );
313 enum D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = ( 5 );
314 enum D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = ( 8 );
315 enum D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES = ( 2048 );
316 enum D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = ( 512 );
317 enum D3D11_SO_BUFFER_SLOT_COUNT = ( 4 );
318 enum D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP = ( 0xffffffff );
319 enum D3D11_SO_NO_RASTERIZED_STREAM = ( 0xffffffff );
320 enum D3D11_SO_OUTPUT_COMPONENT_COUNT = ( 128 );
321 enum D3D11_SO_STREAM_COUNT = ( 4 );
322 enum D3D11_SPEC_DATE_DAY = ( 04 );
323 enum D3D11_SPEC_DATE_MONTH = ( 06 );
324 enum D3D11_SPEC_DATE_YEAR = ( 2009 );
325 enum D3D11_SPEC_VERSION = ( 1.0 );
326 enum D3D11_SRGB_GAMMA = ( 2.2f );
327 enum D3D11_SRGB_TO_FLOAT_DENOMINATOR_1 = ( 12.92f );
328 enum D3D11_SRGB_TO_FLOAT_DENOMINATOR_2 = ( 1.055f );
329 enum D3D11_SRGB_TO_FLOAT_EXPONENT = ( 2.4f );
330 enum D3D11_SRGB_TO_FLOAT_OFFSET = ( 0.055f );
331 enum D3D11_SRGB_TO_FLOAT_THRESHOLD = ( 0.04045f );
332 enum D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = ( 0.5f );
333 enum D3D11_STANDARD_COMPONENT_BIT_COUNT = ( 32 );
334 enum D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = ( 64 );
335 enum D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = ( 4 );
336 enum D3D11_STANDARD_PIXEL_COMPONENT_COUNT = ( 128 );
337 enum D3D11_STANDARD_PIXEL_ELEMENT_COUNT = ( 32 );
338 enum D3D11_STANDARD_VECTOR_SIZE = ( 4 );
339 enum D3D11_STANDARD_VERTEX_ELEMENT_COUNT = ( 32 );
340 enum D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = ( 64 );
341 enum D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT = ( 8 );
342 enum D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT = ( 8 );
343 enum D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = ( 64 );
344 enum D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = ( 64 );
345 enum D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = ( 63 );
346 enum D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR = ( 64 );
347 enum D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = ( 2 );
348 enum D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = ( 1 );
349 enum D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = ( 1 );
350 enum D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT = ( 16 );
351 enum D3D11_UNBOUND_MEMORY_ACCESS_RESULT = ( 0 );
352 enum D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = ( 15 );
353 enum D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = ( 16 );
354 enum D3D11_VIEWPORT_BOUNDS_MAX = ( 32767 );
355 enum D3D11_VIEWPORT_BOUNDS_MIN = ( -32768 );
356 enum D3D11_VS_INPUT_REGISTER_COMPONENTS = ( 4 );
357 enum D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
358 enum D3D11_VS_INPUT_REGISTER_COUNT = ( 32 );
359 enum D3D11_VS_INPUT_REGISTER_READS_PER_INST = ( 2 );
360 enum D3D11_VS_INPUT_REGISTER_READ_PORTS = ( 1 );
361 enum D3D11_VS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
362 enum D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
363 enum D3D11_VS_OUTPUT_REGISTER_COUNT = ( 32 );
364 enum D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = ( 10 );
365 enum D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = ( 25 );
366 enum D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = ( 25 );
367 
368 enum D3D11_1_UAV_SLOT_COUNT = ( 64 );
369 
370 enum D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES = ( 65536 );
371 
372 enum _FACD3D11 = 0x87c;
373 enum _FACD3D11DEBUG	= _FACD3D11 + 1;
374 
375 HRESULT MAKE_D3D11_HRESULT(T)(T code) {
376 	return MAKE_HRESULT(1, _FACD3D11, code);
377 }
378 
379 HRESULT MAKE_D3D11_STATUS(T)(T code) {
380 	return MAKE_HRESULT(0, _FACD3D11, code);
381 }
382 
383 enum D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  = MAKE_D3D11_HRESULT(1);
384 enum D3D11_ERROR_FILE_NOT_FOUND = MAKE_D3D11_HRESULT(2);
385 enum D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS = MAKE_D3D11_HRESULT(3);
386 enum D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD = MAKE_D3D11_HRESULT(4);
387 
388 
389 // TODO: move all externs to each symbols where needed, block is error-prone
390 extern(C):
391 
392 alias D3D11_INPUT_CLASSIFICATION = int;
393 enum : D3D11_INPUT_CLASSIFICATION
394 {
395 	D3D11_INPUT_PER_VERTEX_DATA = 0,
396 	D3D11_INPUT_PER_INSTANCE_DATA = 1
397 }
398 
399 enum D3D11_APPEND_ALIGNED_ELEMENT = ( 0xffffffff );
400 
401 struct D3D11_INPUT_ELEMENT_DESC
402 {
403 	LPCSTR SemanticName;
404 	UINT SemanticIndex;
405 	DXGI_FORMAT Format;
406 	UINT InputSlot;
407 	UINT AlignedByteOffset;
408 	D3D11_INPUT_CLASSIFICATION InputSlotClass;
409 	UINT InstanceDataStepRate;
410 }
411 
412 alias D3D11_FILL_MODE = int;
413 enum : D3D11_FILL_MODE
414 {
415 	D3D11_FILL_WIREFRAME	= 2,
416 	D3D11_FILL_SOLID	= 3
417 }
418 
419 alias D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;
420 
421 alias D3D_PRIMITIVE D3D11_PRIMITIVE;
422 
423 alias D3D11_CULL_MODE = int;
424 enum : D3D11_CULL_MODE
425 {
426 	D3D11_CULL_NONE	= 1,
427 	D3D11_CULL_FRONT	= 2,
428 	D3D11_CULL_BACK	= 3
429 }
430 
431 struct D3D11_SO_DECLARATION_ENTRY
432 {
433 	UINT Stream;
434 	LPCSTR SemanticName;
435 	UINT SemanticIndex;
436 	BYTE StartComponent;
437 	BYTE ComponentCount;
438 	BYTE OutputSlot;
439 }
440 
441 struct D3D11_VIEWPORT
442 {
443 	FLOAT TopLeftX;
444 	FLOAT TopLeftY;
445 	FLOAT Width;
446 	FLOAT Height;
447 	FLOAT MinDepth = D3D11_MIN_DEPTH;
448 	FLOAT MaxDepth = D3D11_MAX_DEPTH;
449 }
450 
451 alias D3D11_RESOURCE_DIMENSION = int;
452 enum : D3D11_RESOURCE_DIMENSION
453 {
454 	D3D11_RESOURCE_DIMENSION_UNKNOWN	= 0,
455 	D3D11_RESOURCE_DIMENSION_BUFFER	= 1,
456 	D3D11_RESOURCE_DIMENSION_TEXTURE1D	= 2,
457 	D3D11_RESOURCE_DIMENSION_TEXTURE2D	= 3,
458 	D3D11_RESOURCE_DIMENSION_TEXTURE3D	= 4
459 }
460 
461 alias D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
462 
463 alias D3D11_DSV_DIMENSION = int;
464 enum : D3D11_DSV_DIMENSION
465 {
466 	D3D11_DSV_DIMENSION_UNKNOWN	= 0,
467 	D3D11_DSV_DIMENSION_TEXTURE1D	= 1,
468 	D3D11_DSV_DIMENSION_TEXTURE1DARRAY	= 2,
469 	D3D11_DSV_DIMENSION_TEXTURE2D	= 3,
470 	D3D11_DSV_DIMENSION_TEXTURE2DARRAY	= 4,
471 	D3D11_DSV_DIMENSION_TEXTURE2DMS	= 5,
472 	D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY	= 6
473 }
474 
475 alias D3D11_RTV_DIMENSION = int;
476 enum : D3D11_RTV_DIMENSION
477 {
478 	D3D11_RTV_DIMENSION_UNKNOWN	= 0,
479 	D3D11_RTV_DIMENSION_BUFFER	= 1,
480 	D3D11_RTV_DIMENSION_TEXTURE1D	= 2,
481 	D3D11_RTV_DIMENSION_TEXTURE1DARRAY	= 3,
482 	D3D11_RTV_DIMENSION_TEXTURE2D	= 4,
483 	D3D11_RTV_DIMENSION_TEXTURE2DARRAY	= 5,
484 	D3D11_RTV_DIMENSION_TEXTURE2DMS	= 6,
485 	D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY	= 7,
486 	D3D11_RTV_DIMENSION_TEXTURE3D	= 8
487 }
488 
489 alias D3D11_UAV_DIMENSION = int;
490 enum : D3D11_UAV_DIMENSION
491 {
492 	D3D11_UAV_DIMENSION_UNKNOWN	= 0,
493 	D3D11_UAV_DIMENSION_BUFFER	= 1,
494 	D3D11_UAV_DIMENSION_TEXTURE1D	= 2,
495 	D3D11_UAV_DIMENSION_TEXTURE1DARRAY	= 3,
496 	D3D11_UAV_DIMENSION_TEXTURE2D	= 4,
497 	D3D11_UAV_DIMENSION_TEXTURE2DARRAY	= 5,
498 	D3D11_UAV_DIMENSION_TEXTURE3D	= 8
499 }
500 
501 alias D3D11_USAGE = int;
502 enum : D3D11_USAGE
503 {
504 	D3D11_USAGE_DEFAULT	= 0,
505 	D3D11_USAGE_IMMUTABLE	= 1,
506 	D3D11_USAGE_DYNAMIC	= 2,
507 	D3D11_USAGE_STAGING	= 3
508 }
509 
510 alias D3D11_BIND_FLAG = int;
511 enum : D3D11_BIND_FLAG
512 {
513 	D3D11_BIND_VERTEX_BUFFER	= 0x1L,
514 	D3D11_BIND_INDEX_BUFFER	= 0x2L,
515 	D3D11_BIND_CONSTANT_BUFFER	= 0x4L,
516 	D3D11_BIND_SHADER_RESOURCE	= 0x8L,
517 	D3D11_BIND_STREAM_OUTPUT	= 0x10L,
518 	D3D11_BIND_RENDER_TARGET	= 0x20L,
519 	D3D11_BIND_DEPTH_STENCIL	= 0x40L,
520 	D3D11_BIND_UNORDERED_ACCESS	= 0x80L
521 }
522 
523 alias D3D11_CPU_ACCESS_FLAG = int;
524 enum : D3D11_CPU_ACCESS_FLAG
525 {
526 	D3D11_CPU_ACCESS_WRITE	= 0x10000L,
527 	D3D11_CPU_ACCESS_READ	= 0x20000L
528 }
529 
530 alias D3D11_RESOURCE_MISC_FLAG = int;
531 enum : D3D11_RESOURCE_MISC_FLAG
532 {
533 	D3D11_RESOURCE_MISC_GENERATE_MIPS	= 0x1L,
534 	D3D11_RESOURCE_MISC_SHARED	= 0x2L,
535 	D3D11_RESOURCE_MISC_TEXTURECUBE	= 0x4L,
536 	D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS	= 0x10L,
537 	D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS	= 0x20L,
538 	D3D11_RESOURCE_MISC_BUFFER_STRUCTURED	= 0x40L,
539 	D3D11_RESOURCE_MISC_RESOURCE_CLAMP	= 0x80L,
540 	D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX	= 0x100L,
541 	D3D11_RESOURCE_MISC_GDI_COMPATIBLE	= 0x200L
542 }
543 
544 alias D3D11_MAP = int;
545 enum : D3D11_MAP
546 {
547 	D3D11_MAP_READ	= 1,
548 	D3D11_MAP_WRITE	= 2,
549 	D3D11_MAP_READ_WRITE	= 3,
550 	D3D11_MAP_WRITE_DISCARD	= 4,
551 	D3D11_MAP_WRITE_NO_OVERWRITE	= 5
552 }
553 
554 alias D3D11_MAP_FLAG = int;
555 enum : D3D11_MAP_FLAG
556 {
557 	D3D11_MAP_FLAG_DO_NOT_WAIT	= 0x100000L
558 }
559 
560 alias D3D11_RAISE_FLAG = int;
561 enum : D3D11_RAISE_FLAG
562 {
563 	D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR	= 0x1L
564 }
565 
566 alias D3D11_CLEAR_FLAG = int;
567 enum : D3D11_CLEAR_FLAG
568 {
569 	D3D11_CLEAR_DEPTH	= 0x1L,
570 	D3D11_CLEAR_STENCIL	= 0x2L
571 }
572 
573 alias RECT D3D11_RECT;
574 
575 struct D3D11_BOX
576 {
577 	UINT left;
578 	UINT top;
579 	UINT front;
580 	UINT right;
581 	UINT bottom;
582 	UINT back;
583 }
584 
585 
586 mixin( uuid!(ID3D11DeviceChild, "1841e5c8-16b0-489b-bcc8-44cfb0d5deae") );
587 interface ID3D11DeviceChild : IUnknown
588 {
589     extern(Windows):
590 	void GetDevice( 
591 				ID3D11Device* ppDevice);
592 
593 	HRESULT  GetPrivateData( 
594 				REFGUID guid,
595 				UINT* pDataSize,
596 				void* pData);
597 
598 	HRESULT SetPrivateData( 
599 				REFGUID guid,
600 				UINT DataSize,
601 				const void* pData);
602 
603 	HRESULT SetPrivateDataInterface( 
604 				REFGUID guid,
605 				const(IUnknown) pData);
606         
607 }
608     
609 
610 alias D3D11_COMPARISON_FUNC = int;
611 enum : D3D11_COMPARISON_FUNC
612 {
613 	D3D11_COMPARISON_NEVER	= 1,
614 	D3D11_COMPARISON_LESS	= 2,
615 	D3D11_COMPARISON_EQUAL	= 3,
616 	D3D11_COMPARISON_LESS_EQUAL	= 4,
617 	D3D11_COMPARISON_GREATER	= 5,
618 	D3D11_COMPARISON_NOT_EQUAL	= 6,
619 	D3D11_COMPARISON_GREATER_EQUAL	= 7,
620 	D3D11_COMPARISON_ALWAYS	= 8
621 }
622 
623 alias D3D11_DEPTH_WRITE_MASK = int;
624 enum : D3D11_DEPTH_WRITE_MASK
625 {
626 	D3D11_DEPTH_WRITE_MASK_ZERO	= 0,
627 	D3D11_DEPTH_WRITE_MASK_ALL	= 1
628 }
629 
630 alias D3D11_STENCIL_OP = int;
631 enum : D3D11_STENCIL_OP
632 {
633 	D3D11_STENCIL_OP_KEEP	= 1,
634 	D3D11_STENCIL_OP_ZERO	= 2,
635 	D3D11_STENCIL_OP_REPLACE	= 3,
636 	D3D11_STENCIL_OP_INCR_SAT	= 4,
637 	D3D11_STENCIL_OP_DECR_SAT	= 5,
638 	D3D11_STENCIL_OP_INVERT	= 6,
639 	D3D11_STENCIL_OP_INCR	= 7,
640 	D3D11_STENCIL_OP_DECR	= 8
641 }
642 
643 struct D3D11_DEPTH_STENCILOP_DESC
644 {
645     D3D11_STENCIL_OP StencilFailOp;
646     D3D11_STENCIL_OP StencilDepthFailOp;
647     D3D11_STENCIL_OP StencilPassOp;
648     D3D11_COMPARISON_FUNC StencilFunc;
649 }
650 
651 struct D3D11_DEPTH_STENCIL_DESC
652 {
653 	BOOL DepthEnable = TRUE;
654 	D3D11_DEPTH_WRITE_MASK DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
655 	D3D11_COMPARISON_FUNC DepthFunc = D3D11_COMPARISON_LESS;
656 	BOOL StencilEnable = FALSE;
657 	UINT8 StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK;
658 	UINT8 StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;
659 	D3D11_DEPTH_STENCILOP_DESC FrontFace = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_ALWAYS };
660 	D3D11_DEPTH_STENCILOP_DESC BackFace = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_ALWAYS };
661 }
662 
663 
664 mixin( uuid!(ID3D11DepthStencilState, "03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1") );
665 interface ID3D11DepthStencilState : ID3D11DeviceChild
666 {
667 	extern(Windows):
668 	void GetDesc( 
669 				D3D11_DEPTH_STENCIL_DESC* pDesc);
670 }
671 
672 
673 alias D3D11_BLEND = int;
674 enum : D3D11_BLEND
675 {
676 	D3D11_BLEND_ZERO	= 1,
677 	D3D11_BLEND_ONE	= 2,
678 	D3D11_BLEND_SRC_COLOR	= 3,
679 	D3D11_BLEND_INV_SRC_COLOR	= 4,
680 	D3D11_BLEND_SRC_ALPHA	= 5,
681 	D3D11_BLEND_INV_SRC_ALPHA	= 6,
682 	D3D11_BLEND_DEST_ALPHA	= 7,
683 	D3D11_BLEND_INV_DEST_ALPHA	= 8,
684 	D3D11_BLEND_DEST_COLOR	= 9,
685 	D3D11_BLEND_INV_DEST_COLOR	= 10,
686 	D3D11_BLEND_SRC_ALPHA_SAT	= 11,
687 	D3D11_BLEND_BLEND_FACTOR	= 14,
688 	D3D11_BLEND_INV_BLEND_FACTOR	= 15,
689 	D3D11_BLEND_SRC1_COLOR	= 16,
690 	D3D11_BLEND_INV_SRC1_COLOR	= 17,
691 	D3D11_BLEND_SRC1_ALPHA	= 18,
692 	D3D11_BLEND_INV_SRC1_ALPHA	= 19
693 }
694 
695 alias D3D11_BLEND_OP = int;
696 enum : D3D11_BLEND_OP
697 {
698 	D3D11_BLEND_OP_ADD	= 1,
699 	D3D11_BLEND_OP_SUBTRACT	= 2,
700 	D3D11_BLEND_OP_REV_SUBTRACT	= 3,
701 	D3D11_BLEND_OP_MIN	= 4,
702 	D3D11_BLEND_OP_MAX	= 5
703 }
704 
705 alias D3D11_COLOR_WRITE_ENABLE = int;
706 enum : D3D11_COLOR_WRITE_ENABLE
707 {
708 	D3D11_COLOR_WRITE_ENABLE_RED	= 1,
709 	D3D11_COLOR_WRITE_ENABLE_GREEN	= 2,
710 	D3D11_COLOR_WRITE_ENABLE_BLUE	= 4,
711 	D3D11_COLOR_WRITE_ENABLE_ALPHA	= 8,
712 	D3D11_COLOR_WRITE_ENABLE_ALL	= ( ( ( D3D11_COLOR_WRITE_ENABLE_RED | D3D11_COLOR_WRITE_ENABLE_GREEN )  | D3D11_COLOR_WRITE_ENABLE_BLUE )  | D3D11_COLOR_WRITE_ENABLE_ALPHA ) 
713 }
714 
715 struct D3D11_RENDER_TARGET_BLEND_DESC
716 {
717 	BOOL BlendEnable;
718 	D3D11_BLEND SrcBlend;
719 	D3D11_BLEND DestBlend;
720 	D3D11_BLEND_OP BlendOp;
721 	D3D11_BLEND SrcBlendAlpha;
722 	D3D11_BLEND DestBlendAlpha;
723 	D3D11_BLEND_OP BlendOpAlpha;
724 	UINT8 RenderTargetWriteMask;
725 }
726 
727 // TODO: move Init() to CTFE and assign its result to RenderTarget initializer
728 struct D3D11_BLEND_DESC
729 {
730 	BOOL AlphaToCoverageEnable = FALSE;
731 	BOOL IndependentBlendEnable = FALSE;
732 	D3D11_RENDER_TARGET_BLEND_DESC[8] RenderTarget;
733 
734 	// hack:
735 	// default ctor not allowed in structs
736 	void Init() @property
737 	{
738 		const D3D11_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc = {
739 		FALSE,
740 		D3D11_BLEND_ONE, D3D11_BLEND_ZERO, D3D11_BLEND_OP_ADD,
741 		D3D11_BLEND_ONE, D3D11_BLEND_ZERO, D3D11_BLEND_OP_ADD,
742 		D3D11_COLOR_WRITE_ENABLE_ALL,
743 		};
744 		for (UINT i = 0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
745 			RenderTarget[ i ] = defaultRenderTargetBlendDesc;
746 	}
747 }
748 
749 
750 mixin( uuid!(ID3D11BlendState, "75b68faa-347d-4159-8f45-a0640f01cd9a") );
751 interface ID3D11BlendState : ID3D11DeviceChild
752 {
753 	extern(Windows):
754 	void GetDesc( 
755 				D3D11_BLEND_DESC *pDesc);
756 }
757 
758 struct D3D11_RASTERIZER_DESC
759 {
760 	D3D11_FILL_MODE FillMode = D3D11_FILL_SOLID;
761 	D3D11_CULL_MODE CullMode = D3D11_CULL_BACK;
762 	BOOL FrontCounterClockwise = FALSE;
763 	INT DepthBias = D3D11_DEFAULT_DEPTH_BIAS;
764 	FLOAT DepthBiasClamp = D3D11_DEFAULT_DEPTH_BIAS_CLAMP;
765 	FLOAT SlopeScaledDepthBias = D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
766 	BOOL DepthClipEnable = TRUE;
767 	BOOL ScissorEnable = FALSE;
768 	BOOL MultisampleEnable = FALSE;
769 	BOOL AntialiasedLineEnable = FALSE;
770 }
771 
772 
773  mixin( uuid!(ID3D11RasterizerState, "9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7") );
774  interface ID3D11RasterizerState : ID3D11DeviceChild
775  {
776 	extern(Windows):
777 	void GetDesc( 
778 				D3D11_RASTERIZER_DESC* pDesc);
779 }
780 
781 struct D3D11_SUBRESOURCE_DATA
782 {
783 	/*const*/ void* pSysMem; // const causes problems in real code
784 	UINT SysMemPitch;
785 	UINT SysMemSlicePitch;
786 }
787 
788 struct D3D11_MAPPED_SUBRESOURCE
789 {
790 	void* pData;
791 	UINT RowPitch;
792 	UINT DepthPitch;
793 }
794 
795 
796 mixin( uuid!(ID3D11Resource, "dc8e63f3-d12b-4952-b47b-5e45026a862d") );
797 interface ID3D11Resource : ID3D11DeviceChild
798 {
799 	extern(Windows):
800 	void GetType( 
801 				D3D11_RESOURCE_DIMENSION* pResourceDimension);
802 
803 	void SetEvictionPriority( 
804 				UINT EvictionPriority);
805 
806 	UINT GetEvictionPriority();
807 }
808     
809 struct D3D11_BUFFER_DESC
810 {
811 	UINT ByteWidth;
812 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
813 	UINT BindFlags;
814 	UINT CPUAccessFlags;
815 	UINT MiscFlags;
816 	UINT StructureByteStride;
817 }
818 
819 
820 mixin( uuid!(ID3D11Buffer, "48570b85-d1ee-4fcd-a250-eb350722b037") );
821 interface ID3D11Buffer : ID3D11Resource
822 {
823 	extern(Windows):
824 	void GetDesc( 
825 				D3D11_BUFFER_DESC* pDesc);
826 }
827     
828 struct D3D11_TEXTURE1D_DESC
829 {
830 	UINT Width;
831 	UINT MipLevels;
832 	UINT ArraySize = 1;
833 	DXGI_FORMAT Format;
834 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
835 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
836 	UINT CPUAccessFlags;
837 	UINT MiscFlags;
838 }
839 
840 
841 mixin( uuid!(ID3D11Texture1D, "f8fb5c27-c6b3-4f75-a4c8-439af2ef564c") );
842 interface ID3D11Texture1D : ID3D11Resource
843 {
844 	extern(Windows):
845 	void GetDesc( 
846 				D3D11_TEXTURE1D_DESC* pDesc);
847 
848 }
849     
850 struct D3D11_TEXTURE2D_DESC
851 {
852 	UINT Width;
853 	UINT Height;
854 	UINT MipLevels;
855 	UINT ArraySize = 1;
856 	DXGI_FORMAT Format;
857 	DXGI_SAMPLE_DESC SampleDesc = {Quality: 0, Count: 1};
858 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
859 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
860 	UINT CPUAccessFlags;
861 	UINT MiscFlags;
862 }
863 
864 
865 mixin( uuid!(ID3D11Texture2D, "6f15aaf2-d208-4e89-9ab4-489535d34f9c") );
866 interface ID3D11Texture2D : ID3D11Resource
867 {
868 	extern(Windows):
869 	void GetDesc( 
870 				D3D11_TEXTURE2D_DESC* pDesc);
871 }
872   
873 struct D3D11_TEXTURE3D_DESC
874 {
875 	UINT Width;
876 	UINT Height;
877 	UINT Depth;
878 	UINT MipLevels;
879 	DXGI_FORMAT Format;
880 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
881 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
882 	UINT CPUAccessFlags;
883 	UINT MiscFlags;
884 }
885 
886 
887 mixin( uuid!(ID3D11Texture3D, "037e866e-f56d-4357-a8af-9dabbe6e250e") );
888 interface ID3D11Texture3D : ID3D11Resource
889 {
890 	extern(Windows):
891 	void GetDesc( 
892 				D3D11_TEXTURE3D_DESC* pDesc);
893 }
894     
895 alias D3D11_TEXTURECUBE_FACE = int;
896 enum : D3D11_TEXTURECUBE_FACE
897 {
898 	D3D11_TEXTURECUBE_FACE_POSITIVE_X	= 0,
899 	D3D11_TEXTURECUBE_FACE_NEGATIVE_X	= 1,
900 	D3D11_TEXTURECUBE_FACE_POSITIVE_Y	= 2,
901 	D3D11_TEXTURECUBE_FACE_NEGATIVE_Y	= 3,
902 	D3D11_TEXTURECUBE_FACE_POSITIVE_Z	= 4,
903 	D3D11_TEXTURECUBE_FACE_NEGATIVE_Z	= 5
904 }
905 
906 
907 mixin( uuid!( ID3D11View, "839d1216-bb2e-412b-b7f4-a9dbebe08ed1") );
908 interface ID3D11View : ID3D11DeviceChild
909 {
910 	extern(Windows):
911 	void GetResource( 
912 				ID3D11Resource* ppResource);
913 }
914 
915     
916 struct D3D11_BUFFER_SRV
917 {
918 	union 
919 	{
920 		UINT FirstElement;
921 		UINT ElementOffset;
922 	}
923 	union 
924 	{
925 		UINT NumElements;
926 		UINT ElementWidth;
927 	}
928 }
929 
930 
931 alias D3D11_BUFFEREX_SRV_FLAG = int;
932 enum : D3D11_BUFFEREX_SRV_FLAG
933 {
934 	D3D11_BUFFEREX_SRV_FLAG_RAW	= 0x1
935 }
936 
937 
938 struct D3D11_BUFFEREX_SRV
939 {
940 	UINT FirstElement;
941 	UINT NumElements;
942 	UINT Flags;
943 }
944 
945 
946 struct D3D11_TEX1D_SRV
947 {
948 	UINT MostDetailedMip;
949 	UINT MipLevels;
950 }
951 
952 
953 struct D3D11_TEX1D_ARRAY_SRV
954 {
955 	UINT MostDetailedMip;
956 	UINT MipLevels;
957 	UINT FirstArraySlice;
958 	UINT ArraySize;
959 }
960 
961 struct D3D11_TEX2D_SRV
962 {
963 	UINT MostDetailedMip;
964 	UINT MipLevels;
965 }
966 
967 struct D3D11_TEX2D_ARRAY_SRV
968 {
969 	UINT MostDetailedMip;
970 	UINT MipLevels;
971 	UINT FirstArraySlice;
972 	UINT ArraySize;
973 }
974 
975 struct D3D11_TEX3D_SRV
976 {
977 	UINT MostDetailedMip;
978 	UINT MipLevels;
979 }
980 
981 struct D3D11_TEXCUBE_SRV
982 {
983 	UINT MostDetailedMip;
984 	UINT MipLevels;
985 }
986 
987 struct D3D11_TEXCUBE_ARRAY_SRV
988 {
989 	UINT MostDetailedMip;
990 	UINT MipLevels;
991 	UINT First2DArrayFace;
992 	UINT NumCubes;
993 }
994 
995 struct D3D11_TEX2DMS_SRV
996 {
997 	UINT UnusedField_NothingToDefine;
998 }
999 
1000 struct D3D11_TEX2DMS_ARRAY_SRV
1001 {
1002 	UINT FirstArraySlice;
1003 	UINT ArraySize;
1004 }
1005 
1006 struct D3D11_SHADER_RESOURCE_VIEW_DESC
1007 {
1008 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1009 	D3D11_SRV_DIMENSION ViewDimension;
1010 	union 
1011 	{
1012 		D3D11_BUFFER_SRV Buffer;
1013 		D3D11_TEX1D_SRV Texture1D;
1014 		D3D11_TEX1D_ARRAY_SRV Texture1DArray;
1015 		D3D11_TEX2D_SRV Texture2D;
1016 		D3D11_TEX2D_ARRAY_SRV Texture2DArray;
1017 		D3D11_TEX2DMS_SRV Texture2DMS;
1018 		D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1019 		D3D11_TEX3D_SRV Texture3D;
1020 		D3D11_TEXCUBE_SRV TextureCube;
1021 		D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
1022 		D3D11_BUFFEREX_SRV BufferEx;
1023 	}
1024 
1025 	this(
1026 		 D3D11_SRV_DIMENSION viewDimension,
1027 	     DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1028 	     UINT mostDetailedMip = 0, // FirstElement for BUFFER
1029 	     UINT mipLevels = -1, // NumElements for BUFFER
1030 	     UINT firstArraySlice = 0, // First2DArrayFace for TEXTURECUBEARRAY
1031 	     UINT arraySize = -1, // NumCubes for TEXTURECUBEARRAY
1032 	     UINT flags = 0 ) // BUFFEREX only
1033 	{
1034 		Format = format;
1035 		ViewDimension = viewDimension;
1036 		switch (viewDimension)
1037 		{
1038 			case D3D11_SRV_DIMENSION_BUFFER:
1039 				Buffer.FirstElement = mostDetailedMip;
1040 				Buffer.NumElements = mipLevels;
1041 				break;
1042 			case D3D11_SRV_DIMENSION_TEXTURE1D:
1043 				Texture1D.MostDetailedMip = mostDetailedMip;
1044 				Texture1D.MipLevels = mipLevels;
1045 				break;
1046 			case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:
1047 				Texture1DArray.MostDetailedMip = mostDetailedMip;
1048 				Texture1DArray.MipLevels = mipLevels;
1049 				Texture1DArray.FirstArraySlice = firstArraySlice;
1050 				Texture1DArray.ArraySize = arraySize;
1051 				break;
1052 			case D3D11_SRV_DIMENSION_TEXTURE2D:
1053 				Texture2D.MostDetailedMip = mostDetailedMip;
1054 				Texture2D.MipLevels = mipLevels;
1055 				break;
1056 			case D3D11_SRV_DIMENSION_TEXTURE2DARRAY:
1057 				Texture2DArray.MostDetailedMip = mostDetailedMip;
1058 				Texture2DArray.MipLevels = mipLevels;
1059 				Texture2DArray.FirstArraySlice = firstArraySlice;
1060 				Texture2DArray.ArraySize = arraySize;
1061 				break;
1062 			case D3D11_SRV_DIMENSION_TEXTURE2DMS:
1063 				break;
1064 			case D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY:
1065 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1066 				Texture2DMSArray.ArraySize = arraySize;
1067 				break;
1068 			case D3D11_SRV_DIMENSION_TEXTURE3D:
1069 				Texture3D.MostDetailedMip = mostDetailedMip;
1070 				Texture3D.MipLevels = mipLevels;
1071 				break;
1072 			case D3D11_SRV_DIMENSION_TEXTURECUBE:
1073 				TextureCube.MostDetailedMip = mostDetailedMip;
1074 				TextureCube.MipLevels = mipLevels;
1075 				break;
1076 			case D3D11_SRV_DIMENSION_TEXTURECUBEARRAY:
1077 				TextureCubeArray.MostDetailedMip = mostDetailedMip;
1078 				TextureCubeArray.MipLevels = mipLevels;
1079 				TextureCubeArray.First2DArrayFace = firstArraySlice;
1080 				TextureCubeArray.NumCubes = arraySize;
1081 				break;
1082 			case D3D11_SRV_DIMENSION_BUFFEREX:
1083 				BufferEx.FirstElement = mostDetailedMip;
1084 				BufferEx.NumElements = mipLevels;
1085 				BufferEx.Flags = flags;
1086 				break;
1087 			default: break;
1088 		}
1089 	}
1090 }
1091 
1092 
1093 mixin( uuid!(ID3D11ShaderResourceView, "b0e06fe0-8192-4e1a-b1ca-36d7414710b2") );
1094 interface ID3D11ShaderResourceView : ID3D11View
1095 {
1096 	extern(Windows):
1097 	void GetDesc( 
1098 				D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc);
1099 }
1100 
1101 
1102 struct D3D11_BUFFER_RTV
1103 {
1104 	union 
1105     {
1106 		UINT FirstElement;
1107 		UINT ElementOffset;
1108 	}
1109     union 
1110 	{
1111 		UINT NumElements;
1112 		UINT ElementWidth;
1113 	}
1114 }
1115 
1116 struct D3D11_TEX1D_RTV
1117 {
1118 	UINT MipSlice;
1119 }
1120 
1121 struct D3D11_TEX1D_ARRAY_RTV
1122 {
1123 	UINT MipSlice;
1124 	UINT FirstArraySlice;
1125 	UINT ArraySize;
1126 }
1127 
1128 struct D3D11_TEX2D_RTV
1129 {
1130 	UINT MipSlice;
1131 }
1132 
1133 struct D3D11_TEX2DMS_RTV
1134 {
1135 	UINT UnusedField_NothingToDefine;
1136 }
1137 
1138 struct D3D11_TEX2D_ARRAY_RTV
1139 {
1140 	UINT MipSlice;
1141 	UINT FirstArraySlice;
1142 	UINT ArraySize;
1143 }
1144 
1145 struct D3D11_TEX2DMS_ARRAY_RTV
1146 {
1147 	UINT FirstArraySlice;
1148 	UINT ArraySize;
1149 }
1150 
1151 struct D3D11_TEX3D_RTV
1152 {
1153 	UINT MipSlice;
1154 	UINT FirstWSlice;
1155 	UINT WSize;
1156 }
1157 
1158 struct D3D11_RENDER_TARGET_VIEW_DESC
1159 {
1160 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1161 	D3D11_RTV_DIMENSION ViewDimension;
1162 	union 
1163 	{
1164 		D3D11_BUFFER_RTV Buffer;
1165 		D3D11_TEX1D_RTV Texture1D;
1166 		D3D11_TEX1D_ARRAY_RTV Texture1DArray;
1167 		D3D11_TEX2D_RTV Texture2D;
1168 		D3D11_TEX2D_ARRAY_RTV Texture2DArray;
1169 		D3D11_TEX2DMS_RTV Texture2DMS;
1170 		D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
1171 		D3D11_TEX3D_RTV Texture3D;
1172 	}
1173 
1174 	this(
1175 		D3D11_RTV_DIMENSION viewDimension,
1176 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1177 		UINT mipSlice = 0, // FirstElement for BUFFER
1178 		UINT firstArraySlice = 0, // NumElements for BUFFER, FirstWSlice for TEXTURE3D
1179 		UINT arraySize = -1 ) // WSize for TEXTURE3D
1180 	{
1181 		Format = format;
1182 		ViewDimension = viewDimension;
1183 		switch (viewDimension)
1184 		{
1185 			case D3D11_RTV_DIMENSION_BUFFER:
1186 				Buffer.FirstElement = mipSlice;
1187 				Buffer.NumElements = firstArraySlice;
1188 				break;
1189 			case D3D11_RTV_DIMENSION_TEXTURE1D:
1190 				Texture1D.MipSlice = mipSlice;
1191 				break;
1192 			case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:
1193 				Texture1DArray.MipSlice = mipSlice;
1194 				Texture1DArray.FirstArraySlice = firstArraySlice;
1195 				Texture1DArray.ArraySize = arraySize;
1196 				break;
1197 			case D3D11_RTV_DIMENSION_TEXTURE2D:
1198 				Texture2D.MipSlice = mipSlice;
1199 				break;
1200 			case D3D11_RTV_DIMENSION_TEXTURE2DARRAY:
1201 				Texture2DArray.MipSlice = mipSlice;
1202 				Texture2DArray.FirstArraySlice = firstArraySlice;
1203 				Texture2DArray.ArraySize = arraySize;
1204 				break;
1205 			case D3D11_RTV_DIMENSION_TEXTURE2DMS:
1206 				break;
1207 			case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY:
1208 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1209 				Texture2DMSArray.ArraySize = arraySize;
1210 				break;
1211 			case D3D11_RTV_DIMENSION_TEXTURE3D:
1212 				Texture3D.MipSlice = mipSlice;
1213 				Texture3D.FirstWSlice = firstArraySlice;
1214 				Texture3D.WSize = arraySize;
1215 				break;
1216 			default: break;
1217 		}
1218 	}
1219 }
1220 
1221 
1222 mixin( uuid!(ID3D11RenderTargetView, "dfdba067-0b8d-4865-875b-d7b4516cc164") );
1223 interface ID3D11RenderTargetView : ID3D11View
1224 {
1225 	extern(Windows):
1226 	void GetDesc( 
1227 				D3D11_RENDER_TARGET_VIEW_DESC* pDesc);
1228 }
1229     
1230 struct D3D11_TEX1D_DSV
1231 {
1232 	UINT MipSlice;
1233 }
1234 
1235 struct D3D11_TEX1D_ARRAY_DSV
1236 {
1237 	UINT MipSlice;
1238 	UINT FirstArraySlice;
1239 	UINT ArraySize;
1240 }
1241 
1242 struct D3D11_TEX2D_DSV
1243 {
1244 	UINT MipSlice;
1245 }
1246 
1247 struct D3D11_TEX2D_ARRAY_DSV
1248 {
1249 	UINT MipSlice;
1250 	UINT FirstArraySlice;
1251 	UINT ArraySize;
1252 }
1253 
1254 struct D3D11_TEX2DMS_DSV
1255 {
1256 	UINT UnusedField_NothingToDefine;
1257 }
1258 
1259 struct D3D11_TEX2DMS_ARRAY_DSV
1260 {
1261 	UINT FirstArraySlice;
1262 	UINT ArraySize;
1263 }
1264 
1265 
1266 alias D3D11_DSV_FLAG = int;
1267 enum : D3D11_DSV_FLAG
1268 {
1269 	D3D11_DSV_READ_ONLY_DEPTH	= 0x1L,
1270 	D3D11_DSV_READ_ONLY_STENCIL	= 0x2L
1271 }
1272 
1273 struct D3D11_DEPTH_STENCIL_VIEW_DESC
1274 {
1275 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1276 	D3D11_DSV_DIMENSION ViewDimension;
1277 	UINT Flags;
1278 	union 
1279 	{
1280 		D3D11_TEX1D_DSV Texture1D;
1281 		D3D11_TEX1D_ARRAY_DSV Texture1DArray;
1282 		D3D11_TEX2D_DSV Texture2D;
1283 		D3D11_TEX2D_ARRAY_DSV Texture2DArray;
1284 		D3D11_TEX2DMS_DSV Texture2DMS;
1285 		D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
1286 	}
1287 
1288 	this(
1289 		D3D11_DSV_DIMENSION viewDimension,
1290 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1291 		UINT mipSlice = 0,
1292 		UINT firstArraySlice = 0,
1293 		UINT arraySize = -1,
1294 		UINT flags = 0 )
1295 	{
1296 		Format = format;
1297 		ViewDimension = viewDimension;
1298 		Flags = flags;
1299 		switch (viewDimension)
1300 		{
1301 			case D3D11_DSV_DIMENSION_TEXTURE1D:
1302 				Texture1D.MipSlice = mipSlice;
1303 				break;
1304 			case D3D11_DSV_DIMENSION_TEXTURE1DARRAY:
1305 				Texture1DArray.MipSlice = mipSlice;
1306 				Texture1DArray.FirstArraySlice = firstArraySlice;
1307 				Texture1DArray.ArraySize = arraySize;
1308 				break;
1309 			case D3D11_DSV_DIMENSION_TEXTURE2D:
1310 				Texture2D.MipSlice = mipSlice;
1311 				break;
1312 			case D3D11_DSV_DIMENSION_TEXTURE2DARRAY:
1313 				Texture2DArray.MipSlice = mipSlice;
1314 				Texture2DArray.FirstArraySlice = firstArraySlice;
1315 				Texture2DArray.ArraySize = arraySize;
1316 				break;
1317 			case D3D11_DSV_DIMENSION_TEXTURE2DMS:
1318 				break;
1319 			case D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY:
1320 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1321 				Texture2DMSArray.ArraySize = arraySize;
1322 				break;
1323 			default: break;
1324 		}
1325 	}
1326 }
1327 
1328 
1329 mixin( uuid!(ID3D11DepthStencilView, "9fdac92a-1876-48c3-afad-25b94f84a9b6") );
1330 interface ID3D11DepthStencilView : ID3D11View
1331 {
1332 	extern(Windows):
1333     void GetDesc( 
1334 				D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc);
1335 }
1336 
1337 
1338 alias D3D11_BUFFER_UAV_FLAG = int;
1339 enum : D3D11_BUFFER_UAV_FLAG
1340 {
1341 	D3D11_BUFFER_UAV_FLAG_RAW	= 0x1,
1342 	D3D11_BUFFER_UAV_FLAG_APPEND	= 0x2,
1343 	D3D11_BUFFER_UAV_FLAG_COUNTER	= 0x4
1344 }
1345 
1346 struct D3D11_BUFFER_UAV
1347 {
1348 	UINT FirstElement;
1349 	UINT NumElements;
1350 	UINT Flags;
1351 }
1352 
1353 struct D3D11_TEX1D_UAV
1354 {
1355     UINT MipSlice;
1356 }
1357 
1358 struct D3D11_TEX1D_ARRAY_UAV
1359 {
1360 	UINT MipSlice;
1361 	UINT FirstArraySlice;
1362 	UINT ArraySize;
1363 }
1364 
1365 struct D3D11_TEX2D_UAV
1366 {
1367 	UINT MipSlice;
1368 }
1369 
1370 struct D3D11_TEX2D_ARRAY_UAV
1371 {
1372 	UINT MipSlice;
1373 	UINT FirstArraySlice;
1374 	UINT ArraySize;
1375 }
1376 
1377 struct D3D11_TEX3D_UAV
1378 {
1379 	UINT MipSlice;
1380 	UINT FirstWSlice;
1381 	UINT WSize;
1382 }
1383 
1384 struct D3D11_UNORDERED_ACCESS_VIEW_DESC
1385 {
1386 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1387 	D3D11_UAV_DIMENSION ViewDimension;
1388 	union 
1389 	{
1390 		D3D11_BUFFER_UAV Buffer;
1391 		D3D11_TEX1D_UAV Texture1D;
1392 		D3D11_TEX1D_ARRAY_UAV Texture1DArray;
1393 		D3D11_TEX2D_UAV Texture2D;
1394 		D3D11_TEX2D_ARRAY_UAV Texture2DArray;
1395 		D3D11_TEX3D_UAV Texture3D;
1396 	}
1397 
1398 	this(
1399 		D3D11_UAV_DIMENSION viewDimension,
1400 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1401 		UINT mipSlice = 0, // FirstElement for BUFFER
1402 		UINT firstArraySlice = 0, // NumElements for BUFFER, FirstWSlice for TEXTURE3D
1403 		UINT arraySize = -1, // WSize for TEXTURE3D
1404 		UINT flags = 0 ) // BUFFER only
1405 	{
1406 		Format = format;
1407 		ViewDimension = viewDimension;
1408 		switch (viewDimension)
1409 		{
1410 			case D3D11_UAV_DIMENSION_BUFFER:
1411 				Buffer.FirstElement = mipSlice;
1412 				Buffer.NumElements = firstArraySlice;
1413 				Buffer.Flags = flags;
1414 				break;
1415 			case D3D11_UAV_DIMENSION_TEXTURE1D:
1416 				Texture1D.MipSlice = mipSlice;
1417 				break;
1418 			case D3D11_UAV_DIMENSION_TEXTURE1DARRAY:
1419 				Texture1DArray.MipSlice = mipSlice;
1420 				Texture1DArray.FirstArraySlice = firstArraySlice;
1421 				Texture1DArray.ArraySize = arraySize;
1422 				break;
1423 			case D3D11_UAV_DIMENSION_TEXTURE2D:
1424 				Texture2D.MipSlice = mipSlice;
1425 				break;
1426 			case D3D11_UAV_DIMENSION_TEXTURE2DARRAY:
1427 				Texture2DArray.MipSlice = mipSlice;
1428 				Texture2DArray.FirstArraySlice = firstArraySlice;
1429 				Texture2DArray.ArraySize = arraySize;
1430 				break;
1431 			case D3D11_UAV_DIMENSION_TEXTURE3D:
1432 				Texture3D.MipSlice = mipSlice;
1433 				Texture3D.FirstWSlice = firstArraySlice;
1434 				Texture3D.WSize = arraySize;
1435 				break;
1436 			default: break;
1437 		}
1438 	}
1439 }
1440 
1441 
1442 mixin( uuid!( ID3D11UnorderedAccessView, "28acf509-7f5c-48f6-8611-f316010a6380") );
1443 interface ID3D11UnorderedAccessView : ID3D11View
1444 {
1445 	extern(Windows):
1446 	void GetDesc( 
1447 				D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc);
1448 }
1449    
1450 
1451 mixin( uuid!(ID3D11VertexShader, "3b301d64-d678-4289-8897-22f8928b72f3") );
1452 interface ID3D11VertexShader : ID3D11DeviceChild
1453 {
1454 	extern(Windows):
1455 }
1456     
1457 
1458 mixin( uuid!(ID3D11HullShader, "8e5c6061-628a-4c8e-8264-bbe45cb3d5dd") );
1459 interface ID3D11HullShader : ID3D11DeviceChild
1460 {
1461 	extern(Windows):
1462 }
1463 
1464 
1465 mixin( uuid!(ID3D11DomainShader, "f582c508-0f36-490c-9977-31eece268cfa") );
1466 interface ID3D11DomainShader : ID3D11DeviceChild
1467 {
1468 	extern(Windows):
1469 }
1470 
1471 
1472 mixin( uuid!( ID3D11GeometryShader, "38325b96-effb-4022-ba02-2e795b70275c") );
1473 interface ID3D11GeometryShader : ID3D11DeviceChild
1474 {
1475 	extern(Windows):
1476 }
1477 
1478 
1479 mixin( uuid!(ID3D11PixelShader, "ea82e40d-51dc-4f33-93d4-db7c9125ae8c") );
1480 interface ID3D11PixelShader : ID3D11DeviceChild
1481 {
1482 	extern(Windows):
1483 }
1484 
1485 
1486 mixin( uuid!( ID3D11ComputeShader, "4f5b196e-c2bd-495e-bd01-1fded38e4969") );
1487 interface ID3D11ComputeShader : ID3D11DeviceChild
1488 {
1489 	extern(Windows):
1490 }
1491 
1492 
1493 mixin( uuid!( ID3D11InputLayout, "e4819ddc-4cf0-4025-bd26-5de82a3e07b7") );
1494 interface ID3D11InputLayout : ID3D11DeviceChild
1495 {
1496 	extern(Windows):
1497 }
1498 
1499 
1500 alias D3D11_FILTER = int;
1501 enum : D3D11_FILTER
1502 {
1503 	D3D11_FILTER_MIN_MAG_MIP_POINT	= 0,
1504 	D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR	= 0x1,
1505 	D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x4,
1506 	D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR	= 0x5,
1507 	D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT	= 0x10,
1508 	D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x11,
1509 	D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT	= 0x14,
1510 	D3D11_FILTER_MIN_MAG_MIP_LINEAR	= 0x15,
1511 	D3D11_FILTER_ANISOTROPIC	= 0x55,
1512 	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT	= 0x80,
1513 	D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR	= 0x81,
1514 	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x84,
1515 	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR	= 0x85,
1516 	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT	= 0x90,
1517 	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x91,
1518 	D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT	= 0x94,
1519 	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR	= 0x95,
1520 	D3D11_FILTER_COMPARISON_ANISOTROPIC	= 0xd5
1521 }
1522 
1523 
1524 alias D3D11_FILTER_TYPE = int;
1525 enum : D3D11_FILTER_TYPE
1526 {
1527 	D3D11_FILTER_TYPE_POINT	= 0,
1528 	D3D11_FILTER_TYPE_LINEAR	= 1
1529 }
1530 
1531 enum D3D11_FILTER_TYPE_MASK = ( 0x3 );
1532 enum D3D11_MIN_FILTER_SHIFT = ( 4 );
1533 enum D3D11_MAG_FILTER_SHIFT = ( 2 );
1534 enum D3D11_MIP_FILTER_SHIFT = ( 0 );
1535 enum D3D11_COMPARISON_FILTERING_BIT = ( 0x80 );
1536 enum D3D11_ANISOTROPIC_FILTERING_BIT = ( 0x40 );
1537 
1538 D3D11_FILTER D3D11_ENCODE_BASIC_FILTER(T0, T1, T2, T3)( T0 min, T1 mag, T2 mip, T3 bComparison ){
1539     return ( cast( D3D11_FILTER ) (                                                   
1540     ( ( bComparison ) ? D3D11_COMPARISON_FILTERING_BIT : 0 ) |             
1541     ( ( ( min ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MIN_FILTER_SHIFT ) |   
1542     ( ( ( mag ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MAG_FILTER_SHIFT ) |
1543     ( ( ( mip ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MIP_FILTER_SHIFT ) ) );
1544 }
1545 
1546 D3D11_FILTER D3D11_ENCODE_ANISOTROPIC_FILTER(T)(T bComparison ){
1547     return ( cast( D3D11_FILTER ) (
1548     D3D11_ANISOTROPIC_FILTERING_BIT |
1549     D3D11_ENCODE_BASIC_FILTER( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1550                             D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1551                             D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1552                             bComparison )));
1553 }
1554 
1555 
1556 D3D11_FILTER_TYPE D3D11_DECODE_MAG_FILTER(T)( d3d11Filter ){
1557     return ( cast( D3D11_FILTER_TYPE )
1558             ( ( ( d3d11Filter ) >> D3D11_MAG_FILTER_SHIFT ) & D3D11_FILTER_TYPE_MASK ) ) ;
1559 }
1560 
1561 
1562 D3D11_FILTER_TYPE D3D11_DECODE_MIN_FILTER(T)(T d3d11Filter ){                                                             
1563     return ( cast( D3D11_FILTER_TYPE )                                                    
1564             ( ( ( d3d11Filter ) >> D3D11_MIN_FILTER_SHIFT ) & D3D11_FILTER_TYPE_MASK ) );
1565 }
1566     
1567 bool D3D11_DECODE_IS_COMPARISON_FILTER(T)(T d3d11Filter ){
1568     return cast(bool)( ( d3d11Filter ) & D3D11_COMPARISON_FILTERING_BIT );
1569 }
1570 bool D3D11_DECODE_IS_ANISOTROPIC_FILTER(T)(T d3d11Filter ){
1571     return cast(bool)( ( ( d3d11Filter ) & D3D11_ANISOTROPIC_FILTERING_BIT ) &&
1572                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIN_FILTER( d3d11Filter ) ) &&
1573                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MAG_FILTER( d3d11Filter ) ) &&
1574                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIP_FILTER( d3d11Filter ) ) );
1575 }
1576 
1577 
1578 alias D3D11_TEXTURE_ADDRESS_MODE = int;
1579 enum : D3D11_TEXTURE_ADDRESS_MODE
1580 {
1581 	D3D11_TEXTURE_ADDRESS_WRAP	= 1,
1582 	D3D11_TEXTURE_ADDRESS_MIRROR	= 2,
1583 	D3D11_TEXTURE_ADDRESS_CLAMP	= 3,
1584 	D3D11_TEXTURE_ADDRESS_BORDER	= 4,
1585 	D3D11_TEXTURE_ADDRESS_MIRROR_ONCE	= 5
1586 }
1587 
1588 struct D3D11_SAMPLER_DESC
1589 {
1590 	D3D11_FILTER Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
1591 	D3D11_TEXTURE_ADDRESS_MODE AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
1592 	D3D11_TEXTURE_ADDRESS_MODE AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
1593 	D3D11_TEXTURE_ADDRESS_MODE AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
1594 	FLOAT MipLODBias = 0;
1595 	UINT MaxAnisotropy = 1;
1596 	D3D11_COMPARISON_FUNC ComparisonFunc = D3D11_COMPARISON_NEVER;
1597 	FLOAT[ 4 ] BorderColor = [1.0f, 1.0f, 1.0f, 1.0f];
1598 	FLOAT MinLOD = -3.402823466e+38F;
1599 	FLOAT MaxLOD = 3.402823466e+38F;
1600 }
1601 
1602 	
1603 mixin( uuid!( ID3D11SamplerState, "da6fea51-564c-4487-9810-f0d0f9b4e3a5") );
1604 interface ID3D11SamplerState : ID3D11DeviceChild
1605 {
1606 	extern(Windows):
1607 	void GetDesc( 
1608 				D3D11_SAMPLER_DESC* pDesc);
1609 }
1610 
1611 
1612 alias D3D11_FORMAT_SUPPORT = int;
1613 enum : D3D11_FORMAT_SUPPORT
1614 {
1615 	D3D11_FORMAT_SUPPORT_BUFFER	= 0x1,
1616 	D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER	= 0x2,
1617 	D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER	= 0x4,
1618 	D3D11_FORMAT_SUPPORT_SO_BUFFER	= 0x8,
1619 	D3D11_FORMAT_SUPPORT_TEXTURE1D	= 0x10,
1620 	D3D11_FORMAT_SUPPORT_TEXTURE2D	= 0x20,
1621 	D3D11_FORMAT_SUPPORT_TEXTURE3D	= 0x40,
1622 	D3D11_FORMAT_SUPPORT_TEXTURECUBE	= 0x80,
1623 	D3D11_FORMAT_SUPPORT_SHADER_LOAD	= 0x100,
1624 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE	= 0x200,
1625 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON	= 0x400,
1626 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT	= 0x800,
1627 	D3D11_FORMAT_SUPPORT_MIP	= 0x1000,
1628 	D3D11_FORMAT_SUPPORT_MIP_AUTOGEN	= 0x2000,
1629 	D3D11_FORMAT_SUPPORT_RENDER_TARGET	= 0x4000,
1630 	D3D11_FORMAT_SUPPORT_BLENDABLE	= 0x8000,
1631 	D3D11_FORMAT_SUPPORT_DEPTH_STENCIL	= 0x10000,
1632 	D3D11_FORMAT_SUPPORT_CPU_LOCKABLE	= 0x20000,
1633 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE	= 0x40000,
1634 	D3D11_FORMAT_SUPPORT_DISPLAY	= 0x80000,
1635 	D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT	= 0x100000,
1636 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET	= 0x200000,
1637 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD	= 0x400000,
1638 	D3D11_FORMAT_SUPPORT_SHADER_GATHER	= 0x800000,
1639 	D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST	= 0x1000000,
1640 	D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW	= 0x2000000,
1641 	D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON	= 0x4000000
1642 }
1643 
1644 
1645 alias D3D11_FORMAT_SUPPORT2 = int;
1646 enum : D3D11_FORMAT_SUPPORT2
1647 {
1648 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD	= 0x1,
1649 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS	= 0x2,
1650 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE	= 0x4,
1651 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE	= 0x8,
1652 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX	= 0x10,
1653 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX	= 0x20,
1654 	D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD	= 0x40,
1655 	D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE	= 0x80
1656 }
1657 
1658 
1659 mixin( uuid!(ID3D11Asynchronous, "4b35d0cd-1e15-4258-9c98-1b1333f6dd3b") );
1660 interface ID3D11Asynchronous : ID3D11DeviceChild
1661 {
1662 	extern(Windows):
1663 				UINT GetDataSize();
1664 }
1665 
1666 
1667 alias D3D11_ASYNC_GETDATA_FLAG = int;
1668 enum : D3D11_ASYNC_GETDATA_FLAG
1669 {
1670 	D3D11_ASYNC_GETDATA_DONOTFLUSH	= 0x1
1671 }
1672 
1673 
1674 alias D3D11_QUERY = int;
1675 enum : D3D11_QUERY
1676 {
1677 	D3D11_QUERY_EVENT	= 0,
1678 	D3D11_QUERY_OCCLUSION	= ( D3D11_QUERY_EVENT + 1 ) ,
1679 	D3D11_QUERY_TIMESTAMP	= ( D3D11_QUERY_OCCLUSION + 1 ) ,
1680 	D3D11_QUERY_TIMESTAMP_DISJOINT	= ( D3D11_QUERY_TIMESTAMP + 1 ) ,
1681 	D3D11_QUERY_PIPELINE_STATISTICS	= ( D3D11_QUERY_TIMESTAMP_DISJOINT + 1 ) ,
1682 	D3D11_QUERY_OCCLUSION_PREDICATE	= ( D3D11_QUERY_PIPELINE_STATISTICS + 1 ) ,
1683 	D3D11_QUERY_SO_STATISTICS	= ( D3D11_QUERY_OCCLUSION_PREDICATE + 1 ) ,
1684 	D3D11_QUERY_SO_OVERFLOW_PREDICATE	= ( D3D11_QUERY_SO_STATISTICS + 1 ) ,
1685 	D3D11_QUERY_SO_STATISTICS_STREAM0	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE + 1 ) ,
1686 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0	= ( D3D11_QUERY_SO_STATISTICS_STREAM0 + 1 ) ,
1687 	D3D11_QUERY_SO_STATISTICS_STREAM1	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + 1 ) ,
1688 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1	= ( D3D11_QUERY_SO_STATISTICS_STREAM1 + 1 ) ,
1689 	D3D11_QUERY_SO_STATISTICS_STREAM2	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + 1 ) ,
1690 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2	= ( D3D11_QUERY_SO_STATISTICS_STREAM2 + 1 ) ,
1691 	D3D11_QUERY_SO_STATISTICS_STREAM3	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + 1 ) ,
1692 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3	= ( D3D11_QUERY_SO_STATISTICS_STREAM3 + 1 ) 
1693 }
1694 
1695 
1696 alias D3D11_QUERY_MISC_FLAG = int;
1697 enum : D3D11_QUERY_MISC_FLAG
1698 {
1699 	D3D11_QUERY_MISC_PREDICATEHINT	= 0x1
1700 }
1701 
1702 struct D3D11_QUERY_DESC
1703 {
1704 	D3D11_QUERY Query;
1705 	UINT MiscFlags;
1706 }
1707 
1708 	
1709 mixin( uuid!(ID3D11Query, "d6c00747-87b7-425e-b84d-44d108560afd") );
1710 interface ID3D11Query : ID3D11Asynchronous
1711 {
1712 	extern(Windows):
1713 	void GetDesc( 
1714 				D3D11_QUERY_DESC* pDesc);
1715 }
1716 
1717 
1718 mixin( uuid!(ID3D11Predicate, "9eb576dd-9f77-4d86-81aa-8bab5fe490e2") );
1719 interface ID3D11Predicate : ID3D11Query
1720 {
1721 	extern(Windows):
1722 }
1723     
1724 
1725 struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT
1726 {
1727 	UINT64 Frequency;
1728 	BOOL Disjoint;
1729 }
1730 
1731 struct D3D11_QUERY_DATA_PIPELINE_STATISTICS
1732 {
1733 	UINT64 IAVertices;
1734 	UINT64 IAPrimitives;
1735 	UINT64 VSInvocations;
1736 	UINT64 GSInvocations;
1737 	UINT64 GSPrimitives;
1738 	UINT64 CInvocations;
1739 	UINT64 CPrimitives;
1740 	UINT64 PSInvocations;
1741 	UINT64 HSInvocations;
1742 	UINT64 DSInvocations;
1743 	UINT64 CSInvocations;
1744 }
1745 
1746 struct D3D11_QUERY_DATA_SO_STATISTICS
1747 {
1748 	UINT64 NumPrimitivesWritten;
1749 	UINT64 PrimitivesStorageNeeded;
1750 }
1751 
1752 
1753 alias D3D11_COUNTER = int;
1754 enum : D3D11_COUNTER
1755 {
1756 	D3D11_COUNTER_DEVICE_DEPENDENT_0	= 0x40000000
1757 }
1758 
1759 
1760 alias D3D11_COUNTER_TYPE = int;
1761 enum : D3D11_COUNTER_TYPE
1762 {
1763 	D3D11_COUNTER_TYPE_FLOAT32	= 0,
1764 	D3D11_COUNTER_TYPE_UINT16	= ( D3D11_COUNTER_TYPE_FLOAT32 + 1 ) ,
1765 	D3D11_COUNTER_TYPE_UINT32	= ( D3D11_COUNTER_TYPE_UINT16 + 1 ) ,
1766 	D3D11_COUNTER_TYPE_UINT64	= ( D3D11_COUNTER_TYPE_UINT32 + 1 ) 
1767 }
1768 
1769 struct D3D11_COUNTER_DESC
1770 {
1771 	D3D11_COUNTER Counter;
1772 	UINT MiscFlags;
1773 }
1774 
1775 	
1776 struct D3D11_COUNTER_INFO
1777 {
1778 	D3D11_COUNTER LastDeviceDependentCounter;
1779 	UINT NumSimultaneousCounters;
1780 	UINT8 NumDetectableParallelUnits;
1781 }
1782 
1783 
1784 mixin( uuid!(ID3D11Counter, "6e8c49fb-a371-4770-b440-29086022b741") );
1785 interface ID3D11Counter : ID3D11Asynchronous
1786 {
1787 	extern(Windows):
1788 	void GetDesc( 
1789 				D3D11_COUNTER_DESC* pDesc);
1790 }
1791 
1792 
1793 alias D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS = int;
1794 enum : D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS
1795 {	
1796 	D3D11_STANDARD_MULTISAMPLE_PATTERN	= 0xffffffff,
1797 	D3D11_CENTER_MULTISAMPLE_PATTERN	= 0xfffffffe
1798 }
1799 
1800 
1801 alias D3D11_DEVICE_CONTEXT_TYPE = int;
1802 enum : D3D11_DEVICE_CONTEXT_TYPE
1803 {
1804 	D3D11_DEVICE_CONTEXT_IMMEDIATE	= 0,
1805 	D3D11_DEVICE_CONTEXT_DEFERRED	= ( D3D11_DEVICE_CONTEXT_IMMEDIATE + 1 ) 
1806 }
1807 
1808 struct D3D11_CLASS_INSTANCE_DESC
1809 {
1810 	UINT InstanceId;
1811 	UINT InstanceIndex;
1812 	UINT TypeId;
1813 	UINT ConstantBuffer;
1814 	UINT BaseConstantBufferOffset;
1815 	UINT BaseTexture;
1816 	UINT BaseSampler;
1817 	BOOL Created;
1818 }
1819 
1820 
1821 mixin( uuid!(ID3D11ClassInstance, "a6cd7faa-b0b7-4a2f-9436-8662a65797cb") );
1822 interface ID3D11ClassInstance : ID3D11DeviceChild
1823 {
1824 	extern(Windows):
1825 	void GetClassLinkage( 
1826 				ID3D11ClassLinkage* ppLinkage);
1827 
1828 	void GetDesc( 
1829 				D3D11_CLASS_INSTANCE_DESC* pDesc);
1830         
1831 	void GetInstanceName( 
1832 				LPSTR pInstanceName,
1833 				SIZE_T* pBufferLength);
1834 
1835 	void GetTypeName( 
1836 				LPSTR pTypeName,
1837 				SIZE_T* pBufferLength);
1838 }
1839     
1840 
1841 mixin( uuid!(ID3D11ClassLinkage, "ddf57cba-9543-46e4-a12b-f207a0fe7fed") );
1842 interface ID3D11ClassLinkage : ID3D11DeviceChild
1843 {
1844 	extern(Windows):
1845 	HRESULT GetClassInstance( 
1846 				LPCSTR pClassInstanceName,
1847 				UINT InstanceIndex,
1848 				ID3D11ClassInstance* ppInstance);
1849 
1850 	HRESULT CreateClassInstance( 
1851 				LPCSTR pClassTypeName,
1852 				UINT ConstantBufferOffset,
1853 				UINT ConstantVectorOffset,
1854 				UINT TextureOffset,
1855 				UINT SamplerOffset,
1856 				ID3D11ClassInstance* ppInstance);
1857 }
1858     
1859 
1860 mixin( uuid!(ID3D11CommandList, "a24bc4d1-769e-43f7-8013-98ff566c18e2") );
1861 interface ID3D11CommandList : ID3D11DeviceChild
1862 {
1863 	extern(Windows):
1864 				UINT GetContextFlags();
1865 }
1866     
1867 
1868 alias D3D11_FEATURE = int;
1869 enum : D3D11_FEATURE
1870 {
1871 	D3D11_FEATURE_THREADING	= 0,
1872 	D3D11_FEATURE_DOUBLES	= ( D3D11_FEATURE_THREADING + 1 ) ,
1873 	D3D11_FEATURE_FORMAT_SUPPORT	= ( D3D11_FEATURE_DOUBLES + 1 ) ,
1874 	D3D11_FEATURE_FORMAT_SUPPORT2	= ( D3D11_FEATURE_FORMAT_SUPPORT + 1 ) ,
1875 	D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS	= ( D3D11_FEATURE_FORMAT_SUPPORT2 + 1 ) 
1876 }
1877 
1878 struct D3D11_FEATURE_DATA_THREADING
1879 {
1880     BOOL DriverConcurrentCreates;
1881     BOOL DriverCommandLists;
1882 }
1883 
1884 struct D3D11_FEATURE_DATA_DOUBLES
1885 {
1886 	BOOL DoublePrecisionFloatShaderOps;
1887 }
1888 
1889 struct D3D11_FEATURE_DATA_FORMAT_SUPPORT
1890 {
1891 	DXGI_FORMAT InFormat;
1892 	UINT OutFormatSupport;
1893 }
1894 
1895 struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2
1896 {
1897 	DXGI_FORMAT InFormat;
1898 	UINT OutFormatSupport2;
1899 }
1900 
1901 struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS
1902 {
1903 	BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x;
1904 }
1905 
1906 
1907 mixin( uuid!(ID3D11DeviceContext, "c0bfa96c-e089-44fb-8eaf-26f8796190da") );
1908 interface ID3D11DeviceContext : ID3D11DeviceChild
1909 {
1910 	extern(Windows):
1911 	void VSSetConstantBuffers( 
1912 				UINT StartSlot,
1913 				UINT NumBuffers,
1914 				const(ID3D11Buffer)* ppConstantBuffers);
1915 
1916 	void PSSetShaderResources( 
1917 				UINT StartSlot,
1918 				UINT NumViews,
1919 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
1920         
1921 	void PSSetShader( 
1922 				ID3D11PixelShader pPixelShader,
1923 				const(ID3D11ClassInstance)* ppClassInstances,
1924 				UINT NumClassInstances);
1925         
1926 	void PSSetSamplers( 
1927 				UINT StartSlot,
1928 				UINT NumSamplers,
1929 				const(ID3D11SamplerState)* ppSamplers);
1930         
1931 	void VSSetShader( 
1932 				ID3D11VertexShader pVertexShader,
1933 				const(ID3D11ClassInstance)* ppClassInstances,
1934 				UINT NumClassInstances);
1935         
1936 	void DrawIndexed( 
1937 				UINT IndexCount,
1938 				UINT StartIndexLocation,
1939 				INT BaseVertexLocation);
1940 
1941 	void Draw( 
1942 				UINT VertexCount,
1943 				UINT StartVertexLocation);
1944 
1945 	HRESULT Map( 
1946 				ID3D11Resource pResource,
1947 				UINT Subresource,
1948 				D3D11_MAP MapType,
1949 				UINT MapFlags,
1950 				D3D11_MAPPED_SUBRESOURCE* pMappedResource);
1951 
1952 	void Unmap( 
1953 				ID3D11Resource pResource,
1954 				UINT Subresource);
1955 
1956 	void PSSetConstantBuffers( 
1957 				UINT StartSlot,
1958 				UINT NumBuffers,
1959 				const(ID3D11Buffer)* ppConstantBuffers);
1960 
1961 	void IASetInputLayout( 
1962 				ID3D11InputLayout pInputLayout);
1963 
1964 	void IASetVertexBuffers( 
1965 				UINT StartSlot,
1966 				UINT NumBuffers,
1967 				const(ID3D11Buffer)* ppVertexBuffers,
1968 				const(UINT)* pStrides,
1969 				const(UINT)* pOffsets);
1970 
1971 	void IASetIndexBuffer( 
1972 				ID3D11Buffer pIndexBuffer,
1973 				DXGI_FORMAT Format,
1974 				UINT Offset);
1975 
1976 	void DrawIndexedInstanced( 
1977 				UINT IndexCountPerInstance,
1978 				UINT InstanceCount,
1979 				UINT StartIndexLocation,
1980 				INT BaseVertexLocation,
1981 				UINT StartInstanceLocation);
1982 
1983 	void DrawInstanced( 
1984 				UINT VertexCountPerInstance,
1985 				UINT InstanceCount,
1986 				UINT StartVertexLocation,
1987 				UINT StartInstanceLocation);
1988 
1989 	void GSSetConstantBuffers( 
1990 				UINT StartSlot,
1991 				UINT NumBuffers,
1992 				const(ID3D11Buffer)* ppConstantBuffers);
1993 
1994 	void GSSetShader( 
1995 				ID3D11GeometryShader pShader,
1996 				const(ID3D11ClassInstance)* ppClassInstances,
1997 				UINT NumClassInstances);
1998 
1999 	void IASetPrimitiveTopology( 
2000 				D3D11_PRIMITIVE_TOPOLOGY Topology);
2001 
2002 	void VSSetShaderResources( 
2003 				UINT StartSlot,
2004 				UINT NumViews,
2005 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2006 
2007 	void VSSetSamplers( 
2008 				UINT StartSlot,
2009 				UINT NumSamplers,
2010 				const(ID3D11SamplerState)* ppSamplers);
2011 
2012 	void Begin( 
2013 				ID3D11Asynchronous pAsync);
2014 
2015 	void End( 
2016 				ID3D11Asynchronous pAsync);
2017         
2018 	HRESULT GetData( 
2019 				ID3D11Asynchronous pAsync,
2020 				void* pData,
2021 				UINT DataSize,
2022 				UINT GetDataFlags);
2023 
2024 	void SetPredication( 
2025 				ID3D11Predicate pPredicate,
2026 				BOOL PredicateValue);
2027 
2028 	void GSSetShaderResources( 
2029 				UINT StartSlot,
2030 				UINT NumViews,
2031 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2032 
2033 	void GSSetSamplers( 
2034 				UINT StartSlot,
2035 				UINT NumSamplers,
2036 				const(ID3D11SamplerState)* ppSamplers);
2037 
2038 	void OMSetRenderTargets( 
2039 				UINT NumViews,
2040 				const(ID3D11RenderTargetView)* ppRenderTargetViews,
2041 				ID3D11DepthStencilView pDepthStencilView);
2042 
2043 	void OMSetRenderTargetsAndUnorderedAccessViews( 
2044 				UINT NumRTVs,
2045 				const(ID3D11RenderTargetView)* ppRenderTargetViews,
2046 				ID3D11DepthStencilView pDepthStencilView,
2047 				UINT UAVStartSlot,
2048 				UINT NumUAVs,
2049 				const(ID3D11UnorderedAccessView)* ppUnorderedAccessViews,
2050 				const(UINT)* pUAVInitialCounts);
2051 
2052 	void OMSetBlendState( 
2053 				ID3D11BlendState pBlendState,
2054 				FLOAT* BlendFactor, //FLOAT[ 4 ] BlendFactor
2055 				UINT SampleMask);
2056 
2057 	void OMSetDepthStencilState( 
2058 				ID3D11DepthStencilState pDepthStencilState,
2059 				UINT StencilRef);
2060 
2061 	void SOSetTargets( 
2062 				UINT NumBuffers,
2063 				const(ID3D11Buffer)* ppSOTargets,
2064 				const(UINT)* pOffsets);
2065 
2066 	void DrawAuto();
2067 
2068 	void DrawIndexedInstancedIndirect( 
2069 				ID3D11Buffer pBufferForArgs,
2070 				UINT AlignedByteOffsetForArgs);
2071 
2072 	void DrawInstancedIndirect( 
2073 				ID3D11Buffer pBufferForArgs,
2074 				UINT AlignedByteOffsetForArgs);
2075 
2076 	void Dispatch( 
2077 				UINT ThreadGroupCountX,
2078 				UINT ThreadGroupCountY,
2079 				UINT ThreadGroupCountZ);
2080 
2081 	void DispatchIndirect( 
2082 				ID3D11Buffer pBufferForArgs,
2083 				UINT AlignedByteOffsetForArgs);
2084 
2085 	void RSSetState( 
2086 				ID3D11RasterizerState pRasterizerState);
2087 
2088 	void RSSetViewports( 
2089 				UINT NumViewports,
2090 				const(D3D11_VIEWPORT)* pViewports);
2091 
2092 	void RSSetScissorRects( 
2093 				UINT NumRects,
2094 				const(D3D11_RECT)* pRects);
2095 
2096 	void CopySubresourceRegion( 
2097 				ID3D11Resource pDstResource,
2098 				UINT DstSubresource,
2099 				UINT DstX,
2100 				UINT DstY,
2101 				UINT DstZ,
2102 				ID3D11Resource pSrcResource,
2103 				UINT SrcSubresource,
2104 				const(D3D11_BOX)* pSrcBox);
2105 
2106 	void CopyResource( 
2107 				ID3D11Resource pDstResource,
2108 				ID3D11Resource pSrcResource);
2109 
2110 	void UpdateSubresource( 
2111 				ID3D11Resource pDstResource,
2112 				UINT DstSubresource,
2113 				const(D3D11_BOX)* pDstBox,
2114 				const void* pSrcData,
2115 				UINT SrcRowPitch,
2116 				UINT SrcDepthPitch);
2117 
2118 	void CopyStructureCount( 
2119 				ID3D11Buffer pDstBuffer,
2120 				UINT DstAlignedByteOffset,
2121 				ID3D11UnorderedAccessView pSrcView);
2122 
2123 	void ClearRenderTargetView( 
2124 				ID3D11RenderTargetView pRenderTargetView,
2125 				FLOAT* ColorRGBA); //FLOAT[ 4 ] ColorRGBA);
2126 
2127 	void ClearUnorderedAccessViewUint( 
2128 				ID3D11UnorderedAccessView pUnorderedAccessView,
2129 				UINT* Values); //UINT[ 4 ] Values);
2130 
2131 	void ClearUnorderedAccessViewFloat( 
2132 				ID3D11UnorderedAccessView pUnorderedAccessView,
2133 				FLOAT* Values); //FLOAT[ 4 ] Values);
2134 
2135 	void ClearDepthStencilView( 
2136 				ID3D11DepthStencilView pDepthStencilView,
2137 				UINT ClearFlags,
2138 				FLOAT Depth,
2139 				UINT8 Stencil);
2140 
2141 	void GenerateMips( 
2142 				ID3D11ShaderResourceView pShaderResourceView);
2143 
2144 	void SetResourceMinLOD( 
2145 				ID3D11Resource pResource,
2146 				FLOAT MinLOD);
2147 
2148 	FLOAT GetResourceMinLOD( 
2149 				ID3D11Resource pResource);
2150 
2151 	void ResolveSubresource( 
2152 				ID3D11Resource pDstResource,
2153 				UINT DstSubresource,
2154 				ID3D11Resource pSrcResource,
2155 				UINT SrcSubresource,
2156 				DXGI_FORMAT Format);
2157 
2158 	void ExecuteCommandList( 
2159 				ID3D11CommandList pCommandList,
2160 				BOOL RestoreContextState);
2161 
2162 	void HSSetShaderResources( 
2163 				UINT StartSlot,
2164 				UINT NumViews,
2165 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2166 
2167 	void HSSetShader( 
2168 				ID3D11HullShader pHullShader,
2169 				const(ID3D11ClassInstance)* ppClassInstances,
2170 				UINT NumClassInstances);
2171 
2172 	void HSSetSamplers( 
2173 				UINT StartSlot,
2174 				UINT NumSamplers,
2175 				const(ID3D11SamplerState)* ppSamplers);
2176 
2177 	void HSSetConstantBuffers( 
2178 				UINT StartSlot,
2179 				UINT NumBuffers,
2180 				const(ID3D11Buffer)* ppConstantBuffers);
2181 
2182 	void DSSetShaderResources( 
2183 				UINT StartSlot,
2184 				UINT NumViews,
2185 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2186 
2187 	void DSSetShader( 
2188 				ID3D11DomainShader pDomainShader,
2189 				const(ID3D11ClassInstance)* ppClassInstances,
2190 				UINT NumClassInstances);
2191 
2192 	void DSSetSamplers( 
2193 				UINT StartSlot,
2194 				UINT NumSamplers,
2195 				const(ID3D11SamplerState)* ppSamplers);
2196 
2197 	void DSSetConstantBuffers( 
2198 				UINT StartSlot,
2199 				UINT NumBuffers,
2200 				const(ID3D11Buffer)* ppConstantBuffers);
2201 
2202 	void CSSetShaderResources( 
2203 				UINT StartSlot,
2204 				UINT NumViews,
2205 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2206 
2207 	void CSSetUnorderedAccessViews( 
2208 				UINT StartSlot,
2209 				UINT NumUAVs,
2210 				const(ID3D11UnorderedAccessView)* ppUnorderedAccessViews,
2211 				const(UINT)* pUAVInitialCounts);
2212 
2213 	void CSSetShader( 
2214 				ID3D11ComputeShader pComputeShader,
2215 				const(ID3D11ClassInstance)* ppClassInstances,
2216 				UINT NumClassInstances);
2217 
2218 	void CSSetSamplers( 
2219 				UINT StartSlot,
2220 				UINT NumSamplers,
2221 				const(ID3D11SamplerState)* ppSamplers);
2222         
2223 	void CSSetConstantBuffers( 
2224 				UINT StartSlot,
2225 				UINT NumBuffers,
2226 				const(ID3D11Buffer)* ppConstantBuffers);
2227         
2228 	void VSGetConstantBuffers( 
2229 				UINT StartSlot,
2230 				UINT NumBuffers,
2231 				ID3D11Buffer* ppConstantBuffers);
2232 
2233 	void PSGetShaderResources( 
2234 				UINT StartSlot,
2235 				UINT NumViews,
2236 				ID3D11ShaderResourceView* ppShaderResourceViews);
2237 
2238 	void PSGetShader( 
2239 				ID3D11PixelShader* ppPixelShader,
2240 				const(ID3D11ClassInstance)* ppClassInstances,
2241 				UINT* pNumClassInstances);
2242 
2243 	void PSGetSamplers( 
2244 				UINT StartSlot,
2245 				UINT NumSamplers,
2246 				ID3D11SamplerState* ppSamplers);
2247 
2248 	void VSGetShader( 
2249 				ID3D11VertexShader* ppVertexShader,
2250 				const(ID3D11ClassInstance)* ppClassInstances,
2251 				UINT* pNumClassInstances);
2252 
2253 	void PSGetConstantBuffers( 
2254 				UINT StartSlot,
2255 				UINT NumBuffers,
2256 				ID3D11Buffer* ppConstantBuffers);
2257 
2258 	void IAGetInputLayout( 
2259 				ID3D11InputLayout* ppInputLayout);
2260 
2261 	void IAGetVertexBuffers( 
2262 				UINT StartSlot,
2263 				UINT NumBuffers,
2264 				ID3D11Buffer* ppVertexBuffers,
2265 				UINT* pStrides,
2266 				UINT* pOffsets);
2267 
2268 	void IAGetIndexBuffer( 
2269 				ID3D11Buffer* pIndexBuffer,
2270 				DXGI_FORMAT* Format,
2271 				UINT* Offset);
2272 
2273 	void GSGetConstantBuffers( 
2274 				UINT StartSlot,
2275 				UINT NumBuffers,
2276 				ID3D11Buffer* ppConstantBuffers);
2277 
2278 	void GSGetShader( 
2279 				ID3D11GeometryShader* ppGeometryShader,
2280 				const(ID3D11ClassInstance)* ppClassInstances,
2281 				UINT* pNumClassInstances);
2282 
2283 	void IAGetPrimitiveTopology( 
2284 				D3D11_PRIMITIVE_TOPOLOGY* pTopology);
2285 
2286 	void VSGetShaderResources( 
2287 				UINT StartSlot,
2288 				UINT NumViews,
2289 				ID3D11ShaderResourceView* ppShaderResourceViews);
2290 
2291 	void VSGetSamplers( 
2292 				UINT StartSlot,
2293 				UINT NumSamplers,
2294 				ID3D11SamplerState* ppSamplers);
2295 
2296 	void GetPredication( 
2297 				ID3D11Predicate* ppPredicate,
2298 				BOOL* pPredicateValue);
2299 
2300 	void GSGetShaderResources( 
2301 				UINT StartSlot,
2302 				UINT NumViews,
2303 				ID3D11ShaderResourceView* ppShaderResourceViews);
2304 
2305 	void GSGetSamplers( 
2306 				UINT StartSlot,
2307 				UINT NumSamplers,
2308 				ID3D11SamplerState* ppSamplers);
2309 
2310 	void OMGetRenderTargets( 
2311 				UINT NumViews,
2312 				ID3D11RenderTargetView* ppRenderTargetViews,
2313 				ID3D11DepthStencilView* ppDepthStencilView);
2314 
2315 	void OMGetRenderTargetsAndUnorderedAccessViews( 
2316 				UINT NumRTVs,
2317 				ID3D11RenderTargetView* ppRenderTargetViews,
2318 				ID3D11DepthStencilView* ppDepthStencilView,
2319 				UINT UAVStartSlot,
2320 				UINT NumUAVs,
2321 				ID3D11UnorderedAccessView* ppUnorderedAccessViews);
2322 
2323 	void OMGetBlendState( 
2324 				ID3D11BlendState* ppBlendState,
2325 				FLOAT* BlendFactor, //FLOAT[ 4 ] BlendFactor,
2326 				UINT* pSampleMask);
2327 
2328 	void OMGetDepthStencilState( 
2329 				ID3D11DepthStencilState* ppDepthStencilState,
2330 				UINT* pStencilRef);
2331 
2332 	void SOGetTargets( 
2333 				UINT NumBuffers,
2334 				ID3D11Buffer* ppSOTargets);
2335 
2336 	void RSGetState( 
2337 				ID3D11RasterizerState* ppRasterizerState);
2338 
2339 	void RSGetViewports( 
2340 				UINT* pNumViewports,
2341 				D3D11_VIEWPORT* pViewports);
2342 
2343 	void RSGetScissorRects( 
2344 				UINT* pNumRects,
2345 				D3D11_RECT* pRects);
2346 
2347 	void HSGetShaderResources( 
2348 				UINT StartSlot,
2349 				UINT NumViews,
2350 				ID3D11ShaderResourceView* ppShaderResourceViews);
2351 
2352 	void HSGetShader( 
2353 				ID3D11HullShader* ppHullShader,
2354 				ID3D11ClassInstance* ppClassInstances,
2355 				UINT* pNumClassInstances);
2356 
2357 	void HSGetSamplers( 
2358 				UINT StartSlot,
2359 				UINT NumSamplers,
2360 				ID3D11SamplerState* ppSamplers);
2361 
2362 	void HSGetConstantBuffers( 
2363 				UINT StartSlot,
2364 				UINT NumBuffers,
2365 				ID3D11Buffer* ppConstantBuffers);
2366 
2367 	void DSGetShaderResources( 
2368 				UINT StartSlot,
2369 				UINT NumViews,
2370 				ID3D11ShaderResourceView* ppShaderResourceViews);
2371 
2372 	void DSGetShader( 
2373 				ID3D11DomainShader* ppDomainShader,
2374 				ID3D11ClassInstance* ppClassInstances,
2375 				UINT* pNumClassInstances);
2376 
2377 	void DSGetSamplers( 
2378 				UINT StartSlot,
2379 				UINT NumSamplers,
2380 				ID3D11SamplerState* ppSamplers);
2381 
2382 	void DSGetConstantBuffers( 
2383 				UINT StartSlot,
2384 				UINT NumBuffers,
2385 				ID3D11Buffer* ppConstantBuffers);
2386 
2387 	void CSGetShaderResources( 
2388 				UINT StartSlot,
2389 				UINT NumViews,
2390 				ID3D11ShaderResourceView* ppShaderResourceViews);
2391 
2392 	void CSGetUnorderedAccessViews( 
2393 				UINT StartSlot,
2394 				UINT NumUAVs,
2395 				ID3D11UnorderedAccessView* ppUnorderedAccessViews);
2396 
2397 	void CSGetShader( 
2398 				ID3D11ComputeShader* ppComputeShader,
2399 				ID3D11ClassInstance* ppClassInstances,
2400 				UINT* pNumClassInstances);
2401 
2402 	void CSGetSamplers( 
2403 				UINT StartSlot,
2404 				UINT NumSamplers,
2405 				ID3D11SamplerState* ppSamplers);
2406 
2407 	void CSGetConstantBuffers( 
2408 				UINT StartSlot,
2409 				UINT NumBuffers,
2410 				ID3D11Buffer* ppConstantBuffers);
2411 
2412 	void ClearState();
2413 
2414 	void Flush();
2415 
2416 	D3D11_DEVICE_CONTEXT_TYPE GetType();
2417 
2418 	UINT GetContextFlags();
2419 
2420 	HRESULT FinishCommandList( 
2421 				BOOL RestoreDeferredContextState,
2422 				ID3D11CommandList* ppCommandList);
2423 }
2424 
2425 
2426 mixin( uuid!(ID3D11Device, "db6f6ddb-ac77-4e88-8253-819df9bbf140") );
2427 interface ID3D11Device : IUnknown
2428 {
2429 	extern(Windows):
2430 	HRESULT CreateBuffer( 
2431 				const(D3D11_BUFFER_DESC)* pDesc,
2432 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2433 				ID3D11Buffer* ppBuffer);
2434 
2435 	HRESULT CreateTexture1D( 
2436 				const(D3D11_TEXTURE1D_DESC)* pDesc,
2437 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2438 				ID3D11Texture1D* ppTexture1D);
2439 
2440 	HRESULT CreateTexture2D( 
2441 				const(D3D11_TEXTURE2D_DESC)* pDesc,
2442 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2443 				ID3D11Texture2D* ppTexture2D);
2444 
2445 	HRESULT CreateTexture3D( 
2446 				const(D3D11_TEXTURE3D_DESC)* pDesc,
2447 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2448 				ID3D11Texture3D* ppTexture3D);
2449 
2450 	HRESULT CreateShaderResourceView( 
2451 				ID3D11Resource pResource,
2452 				const(D3D11_SHADER_RESOURCE_VIEW_DESC)* pDesc,
2453 				ID3D11ShaderResourceView* ppSRView);
2454 
2455 	HRESULT CreateUnorderedAccessView( 
2456 				ID3D11Resource pResource,
2457 				const(D3D11_UNORDERED_ACCESS_VIEW_DESC)* pDesc,
2458 				ID3D11UnorderedAccessView* ppUAView);
2459 
2460 	HRESULT CreateRenderTargetView( 
2461 				ID3D11Resource pResource,
2462 				const(D3D11_RENDER_TARGET_VIEW_DESC)* pDesc,
2463 				ID3D11RenderTargetView* ppRTView);
2464 
2465 	HRESULT CreateDepthStencilView( 
2466 				ID3D11Resource pResource,
2467 				const(D3D11_DEPTH_STENCIL_VIEW_DESC)* pDesc,
2468 				ID3D11DepthStencilView* ppDepthStencilView);
2469 
2470 	HRESULT CreateInputLayout( 
2471 				const(D3D11_INPUT_ELEMENT_DESC)* pInputElementDescs,
2472 				UINT NumElements,
2473 				const void* pShaderBytecodeWithInputSignature,
2474 				SIZE_T BytecodeLength,
2475 				ID3D11InputLayout* ppInputLayout);
2476 
2477 	HRESULT CreateVertexShader( 
2478 				const void* pShaderBytecode,
2479 				SIZE_T BytecodeLength,
2480 				ID3D11ClassLinkage pClassLinkage,
2481 				ID3D11VertexShader* ppVertexShader);
2482 
2483 	HRESULT CreateGeometryShader( 
2484 				const void* pShaderBytecode,
2485 				SIZE_T BytecodeLength,
2486 				ID3D11ClassLinkage pClassLinkage,
2487 				ID3D11GeometryShader* ppGeometryShader);
2488 
2489 	HRESULT CreateGeometryShaderWithStreamOutput( 
2490 				const void* pShaderBytecode,
2491 				SIZE_T BytecodeLength,
2492 				const(D3D11_SO_DECLARATION_ENTRY)* pSODeclaration,
2493 				UINT NumEntries,
2494 				const(UINT)* pBufferStrides,
2495 				UINT NumStrides,
2496 				UINT RasterizedStream,
2497 				ID3D11ClassLinkage pClassLinkage,
2498 				ID3D11GeometryShader* ppGeometryShader);
2499 
2500 	HRESULT CreatePixelShader( 
2501 				const void* pShaderBytecode,
2502 				SIZE_T BytecodeLength,
2503 				ID3D11ClassLinkage pClassLinkage,
2504 				ID3D11PixelShader* ppPixelShader);
2505 
2506 	HRESULT CreateHullShader( 
2507 				const void* pShaderBytecode,
2508 				SIZE_T BytecodeLength,
2509 				ID3D11ClassLinkage pClassLinkage,
2510 				ID3D11HullShader* ppHullShader);
2511 
2512 	HRESULT CreateDomainShader( 
2513 				const void* pShaderBytecode,
2514 				SIZE_T BytecodeLength,
2515 				ID3D11ClassLinkage pClassLinkage,
2516 				ID3D11DomainShader* ppDomainShader);
2517 
2518 	HRESULT CreateComputeShader( 
2519 				const void* pShaderBytecode,
2520 				SIZE_T BytecodeLength,
2521 				ID3D11ClassLinkage pClassLinkage,
2522 				ID3D11ComputeShader* ppComputeShader);
2523 
2524 	HRESULT CreateClassLinkage( 
2525 				ID3D11ClassLinkage* ppLinkage);
2526         
2527 	HRESULT CreateBlendState( 
2528 				const(D3D11_BLEND_DESC)* pBlendStateDesc,
2529 				ID3D11BlendState* ppBlendState);
2530 
2531 	HRESULT CreateDepthStencilState( 
2532 				const(D3D11_DEPTH_STENCIL_DESC)* pDepthStencilDesc,
2533 				ID3D11DepthStencilState* ppDepthStencilState);
2534 
2535 	HRESULT CreateRasterizerState( 
2536 				const(D3D11_RASTERIZER_DESC)* pRasterizerDesc,
2537 				ID3D11RasterizerState* ppRasterizerState);
2538 
2539 	HRESULT CreateSamplerState( 
2540 				const(D3D11_SAMPLER_DESC)* pSamplerDesc,
2541 				ID3D11SamplerState* ppSamplerState);
2542 
2543 	HRESULT CreateQuery( 
2544 				const(D3D11_QUERY_DESC)* pQueryDesc,
2545 				ID3D11Query* ppQuery);
2546 
2547 	HRESULT CreatePredicate( 
2548 				const(D3D11_QUERY_DESC)* pPredicateDesc,
2549 				ID3D11Predicate* ppPredicate);
2550 
2551 	HRESULT CreateCounter( 
2552 				const(D3D11_COUNTER_DESC)* pCounterDesc,
2553 				ID3D11Counter* ppCounter);
2554 
2555 	HRESULT CreateDeferredContext( 
2556 				UINT ContextFlags,
2557 				ID3D11DeviceContext* ppDeferredContext);
2558 
2559 	HRESULT OpenSharedResource( 
2560 				HANDLE hResource,
2561 				REFIID ReturnedInterface,
2562 				void** ppResource);
2563 
2564 	HRESULT CheckFormatSupport( 
2565 				DXGI_FORMAT Format,
2566 				UINT* pFormatSupport);
2567 
2568 	HRESULT CheckMultisampleQualityLevels( 
2569 				DXGI_FORMAT Format,
2570 				UINT SampleCount,
2571 				UINT* pNumQualityLevels);
2572 
2573 	void CheckCounterInfo( 
2574 				D3D11_COUNTER_INFO *pCounterInfo);
2575 
2576 	HRESULT CheckCounter( 
2577 				const(D3D11_COUNTER_DESC)* pDesc,
2578 				D3D11_COUNTER_TYPE* pType,
2579 				UINT* pActiveCounters,
2580 				LPSTR szName,
2581 				UINT* pNameLength,
2582 				LPSTR szUnits,
2583 				UINT* pUnitsLength,
2584 				LPSTR szDescription,
2585 				UINT* pDescriptionLength);
2586 
2587 	HRESULT CheckFeatureSupport( 
2588 				D3D11_FEATURE Feature,
2589 				void* pFeatureSupportData,
2590 				UINT FeatureSupportDataSize);
2591 
2592 	HRESULT GetPrivateData( 
2593 				REFGUID guid,
2594 				UINT* pDataSize,
2595 				void* pData);
2596 
2597 	HRESULT SetPrivateData( 
2598 				REFGUID guid,
2599 				UINT DataSize,
2600 				const void* pData);
2601 
2602 	HRESULT SetPrivateDataInterface( 
2603 				REFGUID guid,
2604 				const IUnknown pData);
2605 
2606 	D3D_FEATURE_LEVEL GetFeatureLevel();
2607 
2608 	UINT GetCreationFlags();
2609 
2610 	HRESULT GetDeviceRemovedReason();
2611 
2612 	void GetImmediateContext( 
2613 				ID3D11DeviceContext* ppImmediateContext);
2614 
2615 	HRESULT SetExceptionMode( 
2616 				UINT RaiseFlags);
2617 
2618 	UINT GetExceptionMode();
2619 }
2620 
2621 alias D3D11_CREATE_DEVICE_FLAG = int;
2622 enum : D3D11_CREATE_DEVICE_FLAG
2623 {
2624 	D3D11_CREATE_DEVICE_SINGLETHREADED	= 0x1,
2625 	D3D11_CREATE_DEVICE_DEBUG	= 0x2,
2626 	D3D11_CREATE_DEVICE_SWITCH_TO_REF	= 0x4,
2627 	D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS	= 0x8,
2628 	D3D11_CREATE_DEVICE_BGRA_SUPPORT	= 0x20
2629 }
2630 
2631 enum D3D11_SDK_VERSION = ( 7 );
2632 
2633 ///////////////////////////////////////////////////////////////////////////
2634 // D3D11CreateDevice
2635 // ------------------
2636 //
2637 // pAdapter
2638 //      If NULL, D3D11CreateDevice will choose the primary adapter and
2639 //      create a new instance from a temporarily created IDXGIFactory.
2640 //      If non-NULL, D3D11CreateDevice will register the appropriate
2641 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
2642 //      creating the device.
2643 // DriverType
2644 //      Specifies the driver type to be created: hardware, reference or
2645 //      null.
2646 // Software
2647 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
2648 //      non-Software driver types.
2649 // Flags
2650 //      Any of those documented for D3D11CreateDeviceAndSwapChain.
2651 // pFeatureLevels
2652 //      Any of those documented for D3D11CreateDeviceAndSwapChain.
2653 // FeatureLevels
2654 //      Size of feature levels array.
2655 // SDKVersion
2656 //      SDK version. Use the D3D11_SDK_VERSION macro.
2657 // ppDevice
2658 //      Pointer to returned interface. May be NULL.
2659 // pFeatureLevel
2660 //      Pointer to returned feature level. May be NULL.
2661 // ppImmediateContext
2662 //      Pointer to returned interface. May be NULL.
2663 //
2664 // Return Values
2665 //  Any of those documented for 
2666 //          CreateDXGIFactory1
2667 //          IDXGIFactory::EnumAdapters
2668 //          IDXGIAdapter::RegisterDriver
2669 //          D3D11CreateDevice
2670 //
2671 ///////////////////////////////////////////////////////////////////////////
2672 extern (Windows) nothrow
2673 HRESULT D3D11CreateDevice(IDXGIAdapter        pAdapter,
2674                                                  D3D_DRIVER_TYPE     DriverType,
2675                                                  HMODULE             Software,
2676                                                  UINT                Flags,
2677                                                  const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2678                                                  UINT                FeatureLevels,
2679                                                  UINT                SDKVersion,
2680                                                  ID3D11Device        *ppDevice,
2681                                                  D3D_FEATURE_LEVEL   *pFeatureLevel,
2682                                                  ID3D11DeviceContext *ppImmediateContext);
2683 
2684 
2685 alias PFN_D3D11_CREATE_DEVICE = extern (Windows) nothrow HRESULT function(IDXGIAdapter        pAdapter,
2686                                                  D3D_DRIVER_TYPE     DriverType,
2687                                                  HMODULE             Software,
2688                                                  UINT                Flags,
2689                                                  const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2690                                                  UINT                FeatureLevels,
2691                                                  UINT                SDKVersion,
2692                                                  ID3D11Device        *ppDevice,
2693                                                  D3D_FEATURE_LEVEL   *pFeatureLevel,
2694                                                  ID3D11DeviceContext *ppImmediateContext);
2695 
2696 ///////////////////////////////////////////////////////////////////////////
2697 // D3D11CreateDeviceAndSwapChain
2698 // ------------------------------
2699 //
2700 // ppAdapter
2701 //      If NULL, D3D11CreateDevice will choose the primary adapter and 
2702 //      create a new instance from a temporarily created IDXGIFactory.
2703 //      If non-NULL, D3D11CreateDevice will register the appropriate
2704 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
2705 //      creating the device.
2706 // DriverType
2707 //      Specifies the driver type to be created: hardware, reference or
2708 //      null.
2709 // Software
2710 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
2711 //      non-Software driver types.
2712 // Flags
2713 //      Any of those documented for D3D11CreateDevice.
2714 // pFeatureLevels
2715 //      Array of any of the following:
2716 //          D3D_FEATURE_LEVEL_11_0
2717 //          D3D_FEATURE_LEVEL_10_1
2718 //          D3D_FEATURE_LEVEL_10_0
2719 //          D3D_FEATURE_LEVEL_9_3
2720 //          D3D_FEATURE_LEVEL_9_2
2721 //          D3D_FEATURE_LEVEL_9_1
2722 //      Order indicates sequence in which instantiation will be attempted. If
2723 //      NULL, then the implied order is the same as previously listed (i.e. 
2724 //      prefer most features available). 
2725 // FeatureLevels
2726 //      Size of feature levels array.
2727 // SDKVersion
2728 //      SDK version. Use the D3D11_SDK_VERSION macro.
2729 // pSwapChainDesc
2730 //      Swap chain description, may be NULL.
2731 // ppSwapChain
2732 //      Pointer to returned interface. May be NULL.
2733 // ppDevice
2734 //      Pointer to returned interface. May be NULL.
2735 // pFeatureLevel
2736 //      Pointer to returned feature level. May be NULL.
2737 // ppImmediateContext
2738 //      Pointer to returned interface. May be NULL.
2739 //
2740 // Return Values
2741 //  Any of those documented for 
2742 //          CreateDXGIFactory1
2743 //          IDXGIFactory::EnumAdapters
2744 //          IDXGIAdapter::RegisterDriver
2745 //          D3D11CreateDevice
2746 //          IDXGIFactory::CreateSwapChain
2747 //
2748 ///////////////////////////////////////////////////////////////////////////
2749 
2750 
2751 extern(Windows) nothrow
2752 HRESULT D3D11CreateDeviceAndSwapChain(
2753     IDXGIAdapter pAdapter,
2754     D3D_DRIVER_TYPE DriverType,
2755     HMODULE Software,
2756     UINT Flags,
2757     const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2758     UINT FeatureLevels,
2759     UINT SDKVersion,
2760     const(DXGI_SWAP_CHAIN_DESC)* pSwapChainDesc,
2761     IDXGISwapChain* ppSwapChain,
2762     ID3D11Device* ppDevice,
2763     D3D_FEATURE_LEVEL* pFeatureLevel,
2764     ID3D11DeviceContext* ppImmediateContext);
2765 
2766 alias PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN = extern(Windows) nothrow HRESULT function(
2767     IDXGIAdapter pAdapter,
2768     D3D_DRIVER_TYPE DriverType,
2769     HMODULE Software,
2770     UINT Flags,
2771     const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2772     UINT FeatureLevels,
2773     UINT SDKVersion,
2774     const(DXGI_SWAP_CHAIN_DESC)* pSwapChainDesc,
2775     IDXGISwapChain* ppSwapChain,
2776     ID3D11Device* ppDevice,
2777     D3D_FEATURE_LEVEL* pFeatureLevel,
2778     ID3D11DeviceContext* ppImmediateContext);